GSON:
Gson是google开发的json格式解析包,其特点是在解析json之前必须知道所传输的json数据格式,并定义一系列层次结构与json层次结构相同的类。换句话说,如果传输的json结构为:
- {
- "name":"relin",
- "sex":"male",
- "age":26
- }
- class Person {
- public String name;
- public String sex;
- public int age;
- }
Gson解析json有三个特点:
- 如果预先定义的类中不包含json中的某个属性,则该属性就不会被解析出来,但是其他成员仍然能正常解析
- 命名必须完全相同,否则不会被正常解析
- 类的成员变量可以是public,也可以是private
让我们来看两个简单的解析与反解析过程:
1. 定义类:
- package com.relin.gson.data;
- public class Person {
- private String name;
- private int age;
- private int sex;
- /** * @return the name */
- public String getName() {
- return name+"*****";
- }
- /** * @param name the name to set */
- public void setName(String name) {
- this.name = name;
- }
- /** * @return the age */
- public int getAge() {
- return age;
- }
- /** * @param age the age to set */
- public void setAge(int age) {
- this.age = age;
- }
- @Override
- public String toString() {
- return name + ":" + age;
- }
- }
2. String to json:
- private static boolean StringToJson(){
- try{
- String str = "{\"name\":\"name0\",\"age\":0}";
- Gson gson = new Gson();
- Person person= gson.fromJson(str, Person.class);
- System.out.println(person);
- } catch (Exception e){
- return false;
- }
- return true;
- }
3. Json to String:
- private static boolean JsonToString(){
- try{
- Gson gson = new Gson();
- ArrayList<Person> persons = new ArrayList<Person>();
- for (int i = 0; i < 10; i++) {
- Person p = new Person();
- p.setName("name" + i);
- p.setAge(i * 5);
- persons.add(p);
- }
- String str = gson.toJson(persons);
- System.out.println(str);
- } catch (Exception e){
- return false;
- }
- return true;
- }
4. 调用可以如下所示:
- package com.relin.gson;
- import java.util.ArrayList;
- import com.google.gson.Gson;
- import com.relin.gson.data.Person;
- import com.relin.gson.data.UrlResponse;
- public class Example {
- private static boolean JsonToString(){
- try{
- Gson gson = new Gson();
- ArrayList<Person> persons = new ArrayList<Person>();
- for (int i = 0; i < 10; i++) {
- Person p = new Person();
- p.setName("name" + i);
- p.setAge(i * 5);
- persons.add(p);
- }
- String str = gson.toJson(persons);
- System.out.println(str);
- } catch (Exception e){
- return false;
- }
- return true;
- }
- <pre name="code" class="java"> private static boolean StringToJson(){
- try{
- String str = "{\"name\":\"name0\",\"age\":0}";
- Gson gson = new Gson();
- Person person= gson.fromJson(str, Person.class);
- System.out.println(person);
- } catch (Exception e){
- return false;
- }
- return true;
- }</pre>public static void main(String agrs[]){StringToJson();<br>
- <pre name="code" class="java"> JsonToString()</pre> }}<p></p>
- <pre></pre>
- <br>
- <p></p>
- <h2><a name="t1"></a>JSONObject<br>
- </h2>
- <p>另一种用与解析json的java api是来自org.json。用其相对比较直观,其中包含有个主要的类:</p>
- <ul>
- <li>JSONObject相当与json中的字典类型</li></ul>
- <ul>
- <li>JSONArray相当与json中的数组类型<br>
- </li></ul>
- <p>基本用法如下:</p><pre name="code" class="java"> //将String字符串转换为json对象
- JSONObject jsonObject = new JSONObject(strbody);
- //提取int型的属性,其属性名为From,其他boolean等类型也类似
- int from = jsonObject.getInt("From");
- //提取json数组
- JSONArray toData= jsonObject.getJSONArray("ToData");</pre><br>
- <br>
- <p></p>
- <br>