java中string与json互相转化
在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_JSONObject("data");就可以
对于JSONArray⽽⾔就能够使⽤这两种
第⼀种:JSONArray json_to_strings = json_JSONArray("pages");//先将JSONObject⾥包括的JSONArray取出
for (Object object : json_to_strings) {//循环读取就可以
JSONObject json_to_string = JSONObject.fromObject(object);
json_("pages");
}
另外⼀种:JSONArray json_to_strings_test = json_JSONArray("pages");//先将JSONObject⾥包括的JSONArray取出
for (int i = 0; i < json_to_strings_test.size(); i++) {//循环读取就可以
JSONObject json_to_string1 = json_to_JSONObject(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_JSONObject("data");
JSONArray json_to_strings = json_JSONArray("pages");
for (Object object : json_to_strings) {
JSONObject json_to_string = JSONObject.fromObject(object);
json_("pages");
System.out.print("json_(\"pages\"):"+json_("comment"));
System.out.print("\n");
}
JSONObject json_to_data1 = string_JSONObject("data");
JSONArray json_to_strings_test = json_JSONArray("pages");
for (int i = 0; i < json_to_strings_test.size(); i++) {
JSONObject json_to_string1 = json_to_JSONObject(i);
System.out.print("json_(\"pages\"):"+json_("comment"));
java中字符串转数组System.out.print("\n");
}
有新的好的⽅法希望可以讨论

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。