网上的酱油贴太多,自己调试了下,总结下JSON字符串的解析。
比如以下这个JSON数据字符串:
String jsonString="[{\"A1\":1,\"A2\":2,\"AList\":[{\"AA1\":\"aa1\",\"AA2\":\"aa2\"},{\"AB1\":\"ab1\",\"AB2\":\"ab2\"}]}]";
其JSON数据结构为:
[ { "A1":1, "A2":2, "AList": [ { "AA1":"aa1", "AA2":"aa2" }, { "AB1":"ab1", "AB2":"ab2" } ] }]
还有2个规则 :
1)属性的值可以是一个数组,也可以是一个对象,但是不能是多个对象,(多个对象一定要建立数组)
2)一个JSON数据结构可以没有中括号,但是一般不可以没有{},因为对象是存放属性的最小单位。
另外解析的时候需要注意:
1)JSONArray 只可以用 元素下标来访问对象,并且其初始化用的的字符串必须要用“[”开头,“]”结尾。
比如:
String jsonString="[{\"A1\":1,\"A2\":2,\"AList\":[{\"AA1\":\"aa1\",\"AA2\":\"aa2\"},{\"AB1\":\"ab1\",\"AB2\":\"ab2\"}]}]"; JSONArray jsonGroupListByHeadLetter=new JSONArray(jsonString); JSONObject arrayGroupList= jsonGroupListByHeadLetter.getJSONObject(0);
2)JSONObject 只可以用属性名来访问,并且其初始化用的字符串必须要用"{"开头 ,“}” 结尾。
比如:
String jsonString="{\"A1\":1,\"A2\":2,\"AList\":[{\"AA1\":\"aa1\",\"AA2\":\"aa2\"},{\"AB1\":\"ab1\",\"AB2\":\"ab2\"}]}"; JSONObject obj= new JSONObject(jsonString); obj.getInt("A1");
aJSONObject.getInt("属性名");同理,如果你要访问的属性的值是一另一个JSON数组,那么需要这么访问:
JSONObject arrayGroupList= jsonGroupListByHeadLetter.getJSONObject(0); JSONArray temp = arrayGroupList.getJSONArray("AList");
原文地址:http://blog.csdn.net/tbwood/article/details/24787535