JSONObject的形式是:{"a":"111","b":"222","c":"3333"}。JSONArray形式是:[1,"b","c"]
其中JSONObject中可以有JSONArray,形如:{"a":["香蕉","草莓"]};JSONArray中可以有JSONObject,形如:[{"a":"苹果"},{"b":"香蕉"}];
JSONObject:
创建对象:需要注意的是json字符串转成json对象需要加转义字符、并且需要按照固定的格式转化
JSONObject json = new JSONObject();
json.fromObject("{\"a\":\"值\"}");
map转成JSONObject:
Map<String , String > map=new HashMap<String , String>();
map.put("a", "11");
map.put("b", "12");
System.out.println("map->json:"+JSONObject.fromObject(map));
输出为: json:{"a":"11","b":"12"}
字符串转成json格式数据:
导包: import net.sf.json.JSONArray; import net.sf.json.JSONObject;
String s = "[{\"SEA_TYPE\":\"伙食\",\"SEA_AMOUNT\":\"11\",\"SEA_DESC\":\"100\"},{\"SEA_TYPE\":\"伙食\",\"SEA_AMOUNT\":\"12\",\"SEA_DESC\":\"123\"}]";
JSONArray json = JSONArray.fromObject(s);
Object[] os = json.toArray();
for (int i = 0; i < os.length; i++) {
JSONObject SEA = JSONObject.fromObject(os[i]);
System.out.println(Integer.parseInt(SEA.get("SEA_AMOUNT").toString()) * 100);
}
JSONArray:
创建对象:
String s="[\"a\",\"b\",\"c\"]";
JSONArray a=JSONArray.fromObject(s);
System.out.println(a);
输出为:["a","b","c"]
从字符串数组转成JSONArray:
String[] ss=new String[3];
ss[0]="1";
ss[1]="2";
ss[2]="3";
JSONArray jsonArray=JSONArray.fromObject(ss);
System.out.println(jsonArray);
输出为:["1","2","3"]
总结:
1、字符串转成JSON对象或是JSONArray,都需要严格按照其格式,保证其两边用的是大括号还是中括号。
2、字符串解析时,不用关心JSON中是否有JSONArray或者JSONArry中是否有JSON,按照最外边的括号判断用什么解析之后自动会变成指定的对象。