Java中JSON操作
- JSON 与 Xml
JSON类似Xml,比xml更小,更容易解析
JSON 语法
数据以 键值对 的方式保存
数据用逗号分隔
花括号保存 JSON对象
方括号保存 数组
JSON数据的值可以是字符串(” “),数字,布尔值(true 或者 false),null,JSON数组([ ]),JSON对象({ })
示例:
①JSON对象,对象包含多个键值对:{"name" : "scb" , "age":19 , "married":false }
②JSON数组,数组可以包含多个对象:
{
"students" : [
{"name" : "A" , "age":19 },
{"name" : "B" , "age":19 },
{"name" : "C" , "age":19 }
] ,
"num" : 3
}
- 一、读取JSON数据
使用库:google-gson
常用方法: get getAs..
使用示例: 以上为例(将json数据存在class.txt中)
JsonParser jsonParser = new JsonParser(); //创建json解析器
// 通过parse方法获取最外层的json对象。
JsonObject jsonObject =
(JsonObject)jsonParser.parse(new FileReader(class.txt));
System.out.println(""+jsonObject.get("num").getAsInt());
// 获取JSON数组
JsonArray jsonArray = jsonObject.get("students").getAsJsonArray();
// 依次获取数组中的元素
for(int i = 0 ; i<jsonArray.size();i++){
JsonObject subJsonObject = jsonArray.get(i).getAsJsonObject();
System.out.println(""+subJsonObject.get("name").getAsString());
System.out.println(""+subJsonObject.get("age").getAsInt());
}
二、将JSON数据直接转换为对象
json数据
{ "user":{ "id": 10001, "name": "scb" }, "title": "json2object", "content": "json.....", "imgs":[ "http://....”, "http://....", "http://...." ] }
Title类:
public class Title { //使用注解来与json数据对应 @SerializedName("title") private String mTitle; @SerializedName("content") private String mContent; @SerializedName("user") private User mUser; //亦可于外部 public class User { @SerializedName("id") private String mID; @SerializedName("name") private String mName; } @SerializedName("imgs") private List<String> mImgs; }
使用gson将json转换为对象:
//jsonString为json数据字符串 Gson gson = new Gson(); gson.fromJson(jsonString , Title.class);
三、创建JSON数据
①使用库:google-gson
② 常用方法 : add添加其他对象/对象数组 addProperty添加该对象的属性
③ 示例
JsonObject newOne = new JsonObject();
// 往一个对象中添加属性
newOne.addProperty("num", 3);
//建立对象数组
JsonArray array = new JsonArray();
//第一个对象数组元素
JsonObject object1 = new JsonObject();
object1.addProperty("name", "A");
object1.addProperty("age", 19);
array.add(object1);
//第二个对象数组元素
JsonObject object2 = new JsonObject();
object2.addProperty("name", "B");
object2.addProperty("age", 19);
array.add(object2);
//第三个对象数组元素
JsonObject object3 = new JsonObject();
object3.addProperty("name", "C");
object3.addProperty("age", 19);
array.add(object3);
//往一个对象中添加其他对象/对象数组
newOne.add("students", array);
System.out.println(newOne.toString());