转载: java中string与json互相转化

https://blog.csdn.net/u011575570/article/details/47863337

在Java中socket传输数据时,数据类型往往比较难选择。可能要考虑带宽、跨语言、版本的兼容等问题。比较常见的做法有两种:一是把对象包装成JSON字符串传输,二是采用java对象的序列化和反序列化。随着Google工具protoBuf的开源,protobuf也是个不错的选择。对JSON,Object Serialize,ProtoBuf 做个对比。

1、string转json

有三种方法

第一种:string直接转json

String json = "{\"2\":\"efg\",\"1\":\"abc\"}";   JSONObject json_test = JSONObject.fromObject(json);   将string的双引号转义即可,适用于字符串较短的

第二种:将string转为list后转为json

List<String> list = new ArrayList<String>();  list.add("username");  list.add("age");  list.add("sex");  JSONArray array = new JSONArray();  array.add(list);     

                可以使用list的add函数将需要的字符串拼接即可,但是这个只能使用jsonarry

第三种:将string转为map后转为json

 Map<String, String> map = new HashMap<String, String>();
        map.put("1", "abc");
map.put("2", "efg");
JSONArray array_test = new JSONArray();
array_test.add(map);
    JSONObject jsonObject = JSONObject.fromObject(map);

               这里使用map就可以将字符串转化为JSONArray或者JSONObject都可以,但是这里的键不能使用int型

1、json转string

先构造json:JSONObject string_to_json = JSONObject.fromObject("{\"data\": {\"pages\": [ {\"comment\": \"just for test\"},{\"comment\": \"just for test\"}],\"total_count\": 2 },\"errcode\": 0}");

对于JSONObject而言就可以直接使用


    JSONObject json_to_data = string_to_json.getJSONObject("data");即可

对于JSONArray而言就可以使用这两种

第一种:JSONArray json_to_strings = json_to_data.getJSONArray("pages");//先将JSONObject里包含的JSONArray取出
    for (Object object : json_to_strings) {//循环读取即可
     JSONObject json_to_string = JSONObject.fromObject(object);
      json_to_string.get("pages");
    

第二种:JSONArray json_to_strings_test = json_to_data1.getJSONArray("pages");//先将JSONObject里包含的JSONArray取出
    for (int i = 0; i < json_to_strings_test.size(); i++) {//循环读取即可
      JSONObject json_to_string1 = json_to_strings_test.getJSONObject(i);
    

上面全部程序的测试如图:


下面贴出代码:

//string构筑json
String json = "{\"2\":\"efg\",\"1\":\"abc\"}";
JSONObject json_test = JSONObject.fromObject(json);  
    System.out.print("json_test:"+json_test);
    System.out.print("\n");
//使用list构筑json(list只能使用JSONArray)
List<String> list = new ArrayList<String>();
        list.add("username");
        list.add("age");
        list.add("sex");
        JSONArray array = new JSONArray();
        array.add(list);
        System.out.print("array:"+array);
    System.out.print("\n");
        //初始化HashMap集合并添加数组(json必须键不能是int类型)
        Map<String, String> map = new HashMap<String, String>();
        map.put("1", "abc");
map.put("2", "efg");
JSONArray array_test = new JSONArray();
array_test.add(map);
        System.out.print("array_test:"+array_test);
    System.out.print("\n");
    JSONObject jsonObject = JSONObject.fromObject(map);  
    System.out.print("jsonObject:"+jsonObject);
    System.out.print("\n");
    //解析json
    JSONObject string_to_json = JSONObject.fromObject("{\"data\": {\"pages\": [ {\"comment\": \"just for test1\"},{\"comment\": \"just for test2\"}],\"total_count\": 2 },\"errcode\": 0}");
    JSONObject json_to_data = string_to_json.getJSONObject("data");
    JSONArray json_to_strings = json_to_data.getJSONArray("pages");
    for (Object object : json_to_strings) {
     JSONObject json_to_string = JSONObject.fromObject(object);
     json_to_string.get("pages");
     System.out.print("json_to_string.get(\"pages\"):"+json_to_string.get("comment"));
     System.out.print("\n");
    
    JSONObject json_to_data1 = string_to_json.getJSONObject("data");
    JSONArray json_to_strings_test = json_to_data1.getJSONArray("pages");
    for (int i = 0; i < json_to_strings_test.size(); i++) {
      JSONObject json_to_string1 = json_to_strings_test.getJSONObject(i);
      System.out.print("json_to_string1.get(\"pages\"):"+json_to_string1.get("comment"));
      System.out.print("\n");
    

有新的好的方法希望能够讨论

JSONObject.fromObject--JSON与对象的转换

原文网址:http://blog.csdn.net/qq635785620/article/details/10436789
JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。)

代码中有这么一句,是后台的封装数据。

JSONObject jo = JSONObject.fromObject(map);
常见的java代码转换成json

 

--请注意,这个方法曾经给我造成过困惑。因为,它在对Object转换的时候是按照domain类中的所有getXXX()方法进行转换的。如果你在类中写了非属性的getXXX()方法,那么返回给你的就会有XXX属性了。

--使用net.sf.json.*下的类(jar包是json-lib-x.x.jar)



1. List集合转换成json代码

List list = new ArrayList();

list.add( "first" );

list.add( "second" );

JSONArray jsonArray2 = JSONArray.fromObject( list );

2. Map集合转换成json代码

Map map = new HashMap();

map.put("name", "json");

map.put("bool", Boolean.TRUE);

map.put("int", new Integer(1));

map.put("arr", new String[] { "a", "b" });

map.put("func", "function(i){ return this.arr[i]; }");

JSONObject json = JSONObject.fromObject(map);

3. Bean转换成json代码

JSONObject jsonObject = JSONObject.fromObject(new JsonBean());

4. 数组转换成json代码

boolean[] boolArray = new boolean[] { true, false, true };

JSONArray jsonArray1 = JSONArray.fromObject(boolArray);

 

5. 一般数据转换成json代码

JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']" );


猜你喜欢

转载自blog.csdn.net/nicolezhangcheers/article/details/80050749