android笔记--JSON数据解析
[coolxing按: 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正.]
?
什么是JSON:
JSON即JavaScript Object Natation, 它是一种轻量级的数据交换格式, 与XML一样, 是广泛被采用的客户端和服务端交互的解决方案.
JSON对象: JSON中对象(Object)以"{"开始, 以"}"结束. 对象中的每一个item都是一个key-value对, 表现为"key:value"的形式, key-value对之间使用逗号分隔. 如:{"name":"coolxing", "age"=24, "male":true, "address":{"street":"huiLongGuan", "city":"beijing", "country":"china"}}. JSON对象的key只能是string类型的, 而value可以是string, number, false, true, null, Object对象甚至是array数组, 也就是说可以存在嵌套的情况.
JSON数组: JSON数组(array)以"["开始, 以"]"结束, 数组中的每一个元素可以是string, number, false, true, null, Object对象甚至是array数组, 数组间的元素使用逗号分隔. 如["coolxing", 24,?{"street":"huiLongGuan", "city":"beijing", "country":"china"}].
?
JSON数据的解析:解析JSON数据, 首先需要明确待解析的是JSON Object还是JSON array, 然后需要确定采用哪种解析技术. android平台上一般有2种解析技术可供选择: android内置的org.json包和google的开源gson库. 以下将分别采用这两种技术解析JSON对象和JSON数组.
1. ?采用android内置的org.json包解析JSON对象. 假设待解析的JSON数据为json = "{"name":"coolxing", "age"=24, "male":true, "address":{"street":"huiLongGuan", "city":"beijing", "country":"china"}}", 其中\用于转义表达式中的双引号. 首先定义2个JavaBean:
?
??
下面是具体的解析代码:
?
new?TypeToken<List<Person>>(){}.getType(); 这句代码表示创建一个TypeToken的匿名子类对象, 并调用对象的getType()方法.
org.json包和gson库还有很多其他有用的API, 需要的时候可查看文档. 比如有的时候需要通过java对象或java集合和数组生成json数据上传给服务器, 当然你可以自我构造json字符串, 但会很麻烦. 这个时候就可以使用其中的有关API, 方便的完成这项工作.