ECMAScriptgson解析json

json介绍

JSON(JavaScript Object Notation, JS 对象标记)
是一种轻量级的数据交流格式。它依据 ECMAScript
规范的一个子集,接纳完全独立于编程语言的文本格式来存储和代表数据。简洁和明晰的层次结构使得
JSON 成为美好的数据交流语言。
易于人读书和编制,同时也便于机器解析和生成,并实用地升高网络传输效能。现在大部分APP都应用json给前端再次来到数据。

gson包

Gson 是 谷歌 提供的用来在 Java 对象和 JSON 数据里面开展映射的 Java
类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

两种普遍的json数据怎样剖析成java对象

如果用的Android
Sutdio开发,可以透过在线引用库的艺术。在project/app/build.gradle文件之中的dependencies下到场一句代码:

compile 'com.google.code.gson:gson:2.8.0'

gradle会默许从Jcenter Maven仓库获取aar文件。

解析对象

咱俩前日有一个json字符串:”{‘name’:’Ansen’,
‘age’:20}”,有七个特性name跟age,我们得以写一个实体类User来对应.重写了toString方法。输出对象的时候会输出所有属性。而不是一个hash值。

public class User {
    private String name;//姓名
    private int age;//年龄

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

选择gson包把json字符串转成User对象一句代码就搞定,那里用的gson对象是MainActivity的实例变量。调用fromJson方法就能更换了。

String jsonStr="{'name':'Ansen', 'age':20}";
User user=gson.fromJson(jsonStr, User.class);
Log.i("MainActivity","parseObject user:"+user.toString());

分析成数组

地点大家提到了json字符串转对象,在信用社开发中,服务器给大家的是一个数组格式的json数据也很宽泛的。跟转换对象基本相同的。

String jsonStr="[{'name':'Uini', 'age':30},{'name':'Lina', 'age':10}]";
List<User> users=gson.fromJson(jsonStr,new TypeToken<List<User>>() {}.getType());
for(int i=0;i<users.size();i++){
    Log.i("MainActivity","parseArrayList user:"+users.get(i));
}

解析成Map

String jsonStr="{'1': {'name':'haha', 'age':11},'2': {'name':'nihao', 'age':22}}";
Map<String, User> users = gson.fromJson(jsonStr, new TypeToken<Map<String,User>>() {}.getType());
for(String key:users.keySet()){
    Log.i("MainActivity","parseArrayList key:"+key+" user:"+users.get(key));
}

对象解析成json字符串

大家清楚把json字符串转成object,这假诺想把目标转成json字符串呢?其实也很简短,gson包都给大家封装好了。大家new一个User对象,然后调用gson类的toJson方法就能把user对象转成json字符串。

User user=new User();
user.setAge(111);
user.setName("nime");
String jsonStr=gson.toJson(user);
Log.i("MainActivity","jsonStr:"+jsonStr);

运行以上代码,打印的log如下:

05-12 17:18:48.991 14135-14135/com.ansen.gson I/MainActivity: parseObject user:User{name='Ansen', age=20}
05-12 17:18:49.001 14135-14135/com.ansen.gson I/MainActivity: parseArrayList user:User{name='Uini', age=30}
05-12 17:18:49.001 14135-14135/com.ansen.gson I/MainActivity: parseArrayList user:User{name='Lina', age=10}
05-12 17:18:49.001 14135-14135/com.ansen.gson I/MainActivity: parseArrayList key:1 user:User{name='haha', age=11}
05-12 17:18:49.001 14135-14135/com.ansen.gson I/MainActivity: parseArrayList key:2 user:User{name='nihao', age=22}
05-12 17:18:49.001 14135-14135/com.ansen.gson I/MainActivity: jsonStr:{"name":"nime","age":111}

源码下载

源码下载