通常我们都是在页面中对json格式的数据进行解码。今天我遇到一个问题:在java中对json数据进行解码?
使用的Jar包?
如果使用的是maven项目,可以导入下面的依赖
<!-- org.json/json,在java中的编码解码 -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
如果使用的是web项目,可以导入下面jar包
json-20180813.jar,org.json请自行百度。
假设:接收了一串儿json数据,在java中按照键获取对应的值。
String jsonStr="{'id':'1','name':'dz','age':23,'sex':'男'}"; //json
解码
//创建解析json对象的句柄
JSONObject jsonObject = new JSONObject(jsonStr);
System.out.println(jsonObject.get("id")+":"+jsonObject.get("name"));
结果:
成功获取到了json里面的数据。
那怎么用它编码一段json格式的数据呢?
简单编码
编码一段与上面相同格式的json字符串儿。
JSONObject jo = new JSONObject();
jo.put("id", "1");
jo.put("name","dz");
jo.put("age","23");
jo.put("sex","男神");
System.out.println(jo.toString());
/*
{
“id”:"1"
...
}
*/
结果
然后在编写一段儿,复杂一点儿的json字符串,如下格式:
{
“dad”: “dz”,
“son”:[
{
“id”:“1”,
“name”:“yy”
},
{
“id”:“2”,
“name”:“jj”
}
]
}
复杂编码
//创建一个json数组
JSONArray jsonArray = new JSONArray();
//创建第一个数组中的内容
JSONObject jot3=new JSONObject();
jot3.put("id","1");
jot3.put("name","yy");
//放到数组之中
jsonArray.put(jot3);
//创建第二个数组中的内容
JSONObject jot4=new JSONObject();
jot4.put("id","2");
jot4.put("name","jj");
jsonArray.put(jot4);
JSONObject son = new JSONObject();
son.put("son",jsonArray);
//***
//放到一个最外层的json里面
JSONObject da=new JSONObject();
da.put("dad","dz"); //====> {"dad":"dz"}
da.put("son",jsonArray); //====> {["id":"1","name":"yy"],["id":"2","name":"jj"]}
System.out.println(da.toString());
/*
{"dad":"dz",["id":"1","name":"yy"],["id":"2","name":"jj"]}
*/
结果
总结
- JSONObject -------> 创建的是一个 { }。
- JSONArray--------->创建的是一个[ ]。
- JSONArray里面放的是JSONObject-----> [ { },{ } ]