您的位置:首页 > 移动开发 > Objective-C

Java下json的解析方法-----GSON与JSONObject

2012-03-20 13:52 465 查看

GSON:

         Gson是google开发的json格式解析包,其特点是在解析json之前必须知道所传输的json数据格式,并定义一系列层次结构与json层次结构相同的类。换句话说,如果传输的json结构为:

{
"name":"relin",
"sex":"male",
"age":26
}那么,就必须预先定义一个成员变量名字与json中属性名字完全相同的类:
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;
}

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;
}
public static void main(String agrs[]){StringToJson();
                JsonToString()
        }}


JSONObject

另一种用与解析json的java api是来自org.json。用其相对比较直观,其中包含有个主要的类:

JSONObject相当与json中的字典类型
JSONArray相当与json中的数组类型

基本用法如下:      //将String字符串转换为json对象
            JSONObject jsonObject = new JSONObject(strbody);
//提取int型的属性,其属性名为From,其他boolean等类型也类似
            int from = jsonObject.getInt("From");
//提取json数组
            JSONArray toData= jsonObject.getJSONArray("ToData");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息