Json的基本使用

Json是什么?
是一种轻量级的数据交换格式,与XML一样,被采用的客户端和服务端交互的解决方案,具有良好的可读和便于快速编写的特性。

Json的格式规范:
就像协议一样,json肯定也会有一套规范的规则。
数据在名称/值对中,数据由逗号分隔开,花括号保存对象,方括号保存数组。
比如:
[
{ “id”:“1”,“name”:“基神”,“age”:“18” },
{ “id”:“2”,“name”:“B神”,“age”:“18” },
{ “id”:“3”,“name”:“曹神”,“age”:“18” }
]

Android 提供了Json解析的类:
JSONObject : json对象,可以完成Json字符串与java对象的相互转换
JSONArray : json数组,可以完成json字符串与java集合或对象的相互转换
JSONStringer : json文本构建类,这个类可以帮助快速和快捷的创建JSON text ,每个JSONStringer 实体只能对应创建一个JSON text

JSONTokener : json解析类
JSONException : json异常

创建json对应的类:

public class Person {
    private String id;
    private String name;
    private String age;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

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

创建Json解析类:

public class GsonManager {
    public static GsonManager getInstance(){
        return Holder.INSTANCE;
    }
    private static class Holder{
        private static final GsonManager INSTANCE = new GsonManager();
    }

    public List<Person> parseJson(String json){
        List<Person> list = new ArrayList<>();
        try {
            JSONArray jsonArray = new JSONArray(json);
            for (int i = 0 ; i < jsonArray.length() ; i++){
                JSONObject object = (JSONObject) jsonArray.get(i);
                Person person = new Person();
                person.setId(object.getString("id"));
                person.setName(object.getString("name"));
                person.setAge(object.getString("age"));
                list.add(person);
            }
            return list;
        } catch (JSONException e) {
            e.printStackTrace();
            return null;
        }
    }
}
public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
    private static final String Json = "[\n" +
            "    { \"id\":\"1\",\"name\":\"基神\",\"age\":\"18\" },\n" +
            "    { \"id\":\"2\",\"name\":\"B神\",\"age\":\"18\"  },\n" +
            "    { \"id\":\"3\",\"name\":\"曹神\",\"age\":\"18\" }\n" +
            "]";
    private List<Person> personList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        personList = GsonManager.getInstance().parseJson(Json);
        Log.d(TAG, "first person's name :" + personList.get(0).getName());
    }
}

使用Gson解析json:
Gson 是Google提供的用来在Java对象和JSON数据之间进行映射的java类库
下载Gson的jar包放在lib目录下
(1)Gson的创建

Gson gson = new Gson();

或者通过GsonBuilder(),可以设置多种配置:

Gson gson = new GsonBuilder()
   .setLenient()// json宽松  
   .enableComplexMapKeySerialization()//支持Map的key为复杂对象的形式  
   .serializeNulls() //智能null  
   .setPrettyPrinting()// 调教格式  
   .disableHtmlEscaping() //默认是GSON把HTML 转义的
   .create();  

(2)Gson的基本使用:
Gson提供了fromGson() 和 toJson()两个直接用于解析和生成的方法,前者实现反序列化,后者实现序列化,同时两个方法都提供了重载方法
a>基本数据的解析:

Gson gson = new Gson();
int i = gson.fromJson("100" , int.class);  //100
boolean b = gson.fromJson("true" , boolean.class);

b>简单的java Object 序列化
加入有一个person类,有id ,name ,age三个属性

Person person = new Person("1" , "haha" , "23");

使用Gson将它序列化:

Gson gson = new Gson();
String personJson = gson.toJson(person);

c>简单的java Object反序列化

Gson gson = new Gson();
Person person = gson.fromJson(personJson , Person.class);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值