Java常见的Json格式
Json
常见的格式1
{
"name": "张三","age": 27,
"address": "北京市 朝阳区",
"phone": "15326564587"
}
这一种是比较简单的json对象结构,解析比较简单方便
解析方式1
/** * 测试解析Json字符串 { * key:value, * key:value * } * * @param json json字符串 */ private void json01(String json) { try { JSONObject object = new JSONObject(json); Person person = new Person(); String name = object.getString("name"); person.setName(name); int age = object.getInt("age"); person.setAge(age); } catch (JSONException e) { e.printStackTrace(); } }Person类
public class Person { private String name; private int age; private String address; private String phone; 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; }解析方式2:
通过导入gson-2.2.4.jar 解析
这种方式,Person类定义的字段和json字符串中value值名称保持一致
Person类
解析
这种方式解析,效率比较高
常见的格式2:
这种方式是多个对象,放到一个jsonArray数组/集合中,解析的方式类似格式1,但是有所区别,person类类似与格式1
解析方式1
解析方式2
通过导入gson-2.2.4.jar 解析
常见格式3:
这一种是字符串中,对象包含数组
解析方式1
解析方式2:
通过导入gson-2.2.4.jar 解析
Class类 定义数据接收的字段一定要和json字符串保持一致
解析
模型类 Bean
get set 方法
解析数据的时候,常常定义对应的实例对象,对象中的字段可以定义public,解析直接进行解析,直接赋值,直接取值;也可以定义private类型,通过get,set方法取值,赋值。
两种方式有什么差异呢,我们改怎么用合适呐?
有时候我们希望我们的bean对象只允许特定的类调用值,谁用get/set方法就能保护你的值不能其他类调用或者修改,这就是封装的好处;
在特殊情况下,你可以通过set方法,对传进来的值做处理,例如:
private int age;
public void setAge(int age){
if(age<0){
this.age=0;
}else{
this.age=age;
}
}
序列化
当我们创建好模型对象的时候,比如
有时候 我们的className已经在项目中大量的使用了,这个时候后台服务器修改了字段className,导致我们的也相应做修改,这就导致项目中的引用也要修改,费时容易出错,我们可以通过序列化一个值,来保证和json中字符一直就行