json和字符串/数组/集合的互相转换の神操作总结

一:前端字符串转JSON的4种方式

1,eval方式解析,恐怕这是最早的解析方式了。

function strToJson(str){
     var json = eval(‘(‘ + str + ‘)‘);
     return json;
}

2,new Function形式,比较怪异哦。

function strToJson(str){
    var json = (new Function("return " + str))();
    return json;
}

IE6/7中当字符串中含有换行(\n)时,new Function不能解析,但eval却可以。

3,使用全局的JSON对象。

function strToJson(str){
    return JSON.parse(str);
}

目前IE8(S)/Firefox3.5+/Chrome4/Safari4/Opera10 已实现了该方法。

使用JSON.parse需严格遵守JSON规范,如属性都需用引号引起来,如下

var str = ‘{name:"jack"}‘;
var obj = JSON.parse(str); // --> parse error

name没有用引号引起来,使用JSON.parse所有浏览器中均抛异常,解析失败。而前两种方式则没问题。

4,Jquery插件支持的转换方式

$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 

二.Java中字符串转JSON格式

  1.使用JSONObject类的构造方法

public class Demo {
    public static void main(String[] args) throws Exception {
        String str = "{\"a\":\"b\", \"c\":\"d\"}";
        JSONObject a = new JSONObject(str);
        System.out.println(a); // {"c":"d","a":"b"}
        System.out.println(a.get("c")); // d
    }
}  

  2.使用JSONObject的fromObject(jsonstr)方法

import net.sf.json.*;

JSONObject jsStr = JSONObject.fromObject(params); //将字符串{“id”:1}
int jsID = Integer.parseInt(jsStr.getString("id"));//获取id的值

三.Java中字符串转JSON格式数组并遍历

//当需要把一串字符串转成一个json 数组 ,并遍历其中的内容时。
//首页导入 net.sf.json.JSONArray和net.sf.json.JSONObject 两个jar 包

String str = "[{name:‘a‘,value:‘aa‘},{name:‘b‘,value:‘bb‘},{name:‘c‘,value:‘cc‘},{name:‘d‘,value:‘dd‘}]" ;  // 一个未转化的字符串
JSONArray json = JSONArray.fromObject(str ); // 首先把字符串转成 JSONArray  对象
if(json.size()>0){
  for(int i=0;i<json.size();i++){
    JSONObject job = json.getJSONObject(i);  // 遍历 jsonarray 数组,把每一个对象转成 json 对象
    System.out.println(job.get("name")+"=") ;  // 得到 每个对象中的属性值
  }
}

四.Java中字符串转JSON格式的集合类型操作

map转string

Map<String, String> map=new HashMap<String, String>();
map.put("name", "思思博士");
map.put("age","25");
JSONObject jsonObject=JSONObject.fromObject(map);
String res=jsonObject.toString();
System.out.println(res);

结果:{"age":"25","name":"思思博士"}

list转string

List<String> list=new ArrayList<String>();
list.add("中华");
list.add("人民");
list.add("共和国");

JSONArray jsonArray=JSONArray.fromObject(list);
String res=jsonArray.toString();
System.out.println(res);

结果:["中华","人民","共和国"]

string转map

String res="{\"age\":\"25\",\"name\":\"思思博士\"}";
//或者这样
//res="{‘age‘:‘25‘,‘name‘:‘思思博士‘}";
JSONObject jsonObject=JSONObject.fromObject(res);
Map<String,String> map = (HashMap<String,String>) JSONObject.toBean(jsonObject, HashMap.class);
System.out.println(map);
System.out.println(map.size());
System.out.println(map.get("name"));
System.out.println(map.getClass().getName());

结果:

{name=思思博士, age=25}
2
思思博士
java.util.HashMap

String 转成我们的自定义类

package json;

public class UserBean {
    private String name;
    private String age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
}
String userS = "{‘name‘:‘思思博士‘,‘age‘:‘25‘}";
JSONObject obj = JSONObject.fromObject(userS);
UserBean userBean = (UserBean) JSONObject.toBean(obj, UserBean.class);
System.out.println(userBean.getName());

字符串转换成数组(原文是转换成list,自己试了一下,不对,这些都是json工具类的扩展,不一定飞非要用,不过为了显得牛X,还是多装点吧)

String arrayString="[‘a‘,‘b‘,‘ccc‘]";
JSONArray jsonArray=JSONArray.fromObject(arrayString);
Object[] arr=jsonArray.toArray();
System.out.println(arr.length);
System.out.println(arr[2]);
结果:

3
ccc


一,前端JSON转字符串or解析JSON格式数据

var a={"name":"tom","sex":"男","age":"24"};
var b=‘{"name":"Mike","sex":"女","age":"29"}‘;
var aToStr=JSON.stringify(a);
var bToObj=JSON.parse(b);
alert(typeof(aToStr));  //string
alert(typeof(bToObj));//object
JSON.stringify() 

1>jQuery插件支持的转换方式:

$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 
2>浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器:

JSON.parse(jsonstr); //可以将json字符串转换成json对象 
JSON.stringify(jsonobj); //可以将json对象转换成json对符串 
注:ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入json.js。

3>Javascript支持的转换方式: 
eval(‘(‘ + jsonstr + ‘)‘); //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号 
注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式,这种方式不安全eval会执行json串中的表达式。

4>JSON官方的转换方式: 
http://www.json.org/提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法; 
可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。

  

时间: 2024-11-07 00:01:49

json和字符串/数组/集合的互相转换の神操作总结的相关文章

java中json和字符串互转及日期转换 练习

一:以下是用到的jar名称: commons-beanutils-1.6.jar commons-collections-3.2.1.jar commons-lang-2.6.jar commons-logging-1.1.1.jar ezmorph-1.0.3.jar json-lib-2.2.3-jdk13.jar json.jar jar下载地址 链接: https://pan.baidu.com/s/1c2Mkqli 密码: 6ems 二:练习的时候用到了内部类,所以里面有一点对内部类的

C/C++由字符串转JSON/JSON转字符串/数组解析/数组添加

字符串转成JSON(其中str为字符串) Json::Reader Reader; Json::Value DevJson; Reader.parse(str,DevJson); int dev_id = DevJson["dev_id"].asInt(); int index = DevJson["index"].asInt(); JSON转字符串(其中DevStr为字符串) Json::Value DevJson = DevsJson[i]; std::stri

字符数组以及类型对字符串数组以及类型的转换

1.字符串转换为字符数组:char [ ]  CHars = Str(字符串对象名).toCharArray(); 2.字符数组转换为字符串:String Str =  String(sring 类名).valueOf(char[]  CHars)  ; 3.单个字符转换为字符串:String Str = Character.toString('a'); 4.获取字符串中指定位置的单个字符: char C=Str(支符串对象名). charAt(位置索引); 5.获取字符串中指定位置的子字符串:

json字符串、json对象、数组 三者之间的转换

json字符串转化成json对象 // jquery的方法 var jsonObj = $.parseJSON(jsonStr) //js 的方法 var jsonObj = JSON.parse(jsonStr) json对象转化成json字符串 //js方法 var jsonStr1 = JSON.stringify(jsonObj) 例如 例如: <script type="text/javascript"> var jsonStr = '[{"id&quo

转载-------- JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】

转载--*--*---- 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好,下面先看下JSON的格式, JSON可以有两种格式,一种是对象格式的,另一种是数组对象, {"name":"JSON","address":"北京市西城区","age":25}//JS

页面传值的方法 和JSON与字符串和对象之间的转换

java json数据转List对象的集合-----阿里巴巴插件---及原生json---JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】

List<RunfastFullLess> list=(List<RunfastFullLess>)JSONArray.parseObject(activity.getFullLesss(),RunfastFullLess.class); 使用阿里巴巴的json插件 <!--json数据转换的阿里巴巴依赖库--><dependency> <groupId>com.alibaba</groupId> <artifactId>

JS怎么把字符串数组转换成整型数组

比如有一个字符串: const dataStr="1,2,3,4,5"; 现在需要把它分割为int型数组: let dataIntArr=[1,2,3,4,5]; 方法有很多种.这里讲两个有意思的 let dataStr="1,2,3,4,5"; //原始字符串 let dataStrArr=dataStr.split(","); //分割成字符串数组 let dataIntArr=[];//保存转换后的整型字符串 //方法一 dataStrAr

FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换

fastJson对于json格式字符串的解析主要用到了一下三个类: JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换. JSONObject:fastJson提供的json对象. JSONArray:fastJson提供json数组对象. 我们可以把JSONObject当成一个Map<String,Object>来看,只是JSONObject提供了更为丰富便捷的方法,方便我们对于对象属性的操作.我们看一下源码. 同样我们可以把JSONArra