java中json包下载,Java中org.json包解析Json格式总结

Java中org.json包解析Json格式总结

org.json包是一个用来beans,collections,maps,java arrays,XML和JSON互相转换的包,主要提供JSONObject和JSONArray类,是Java常用的Json解析工具。

下载

包对象

1. JSONObject

1. 是一个无序的键/值对集合。

2. 它的表现形式是一个包裹在花括号的字符串,键和值之间使用冒号隔开,键值和键值之间使用逗号隔开。

3. 内在形式是一个使用get()和opt()方法通过键来访问值,和使用put()方法通过键来添加或者替代值的对象。

4. 值可以是任何这些类型:Boolean,JSONArray,JSONObject,Number和String,或者JOSONObject.NULL对象。

public static void jsonObjectTest() {

JSONObject jsonobj = new JSONObject("{'name':'xiazdong','age':20}");

String name = jsonobj.getString("name");

int age = jsonobj.getInt("age");

System.out.println("name = " + name + ",age = " + age);

}

private static String prepareJSONObject() {

JSONObject studentJSONObject = new JSONObject();

try {

studentJSONObject.put("name", "Jason");

studentJSONObject.put("id", 20130001);

studentJSONObject.put("phone", "13579246810");

} catch(JSONException e) {

e.printStackTrace();

}

return studentJSONObject.toString();

}

结果输出:

{"name":"Jason","id":20130001,"phone":"13579246810"}

2. JSONArray

同JSONObject相同属性

public static void jsonArrayTest() {

JSONArray jsonarray = new JSONArray("[{'name':'xiazdong','age':20},{'name':'xzdong','age':15}]");

for (int i = 0; i < jsonarray.length(); i++) {

JSONObject jsonobj = jsonarray.getJSONObject(i);

String name = jsonobj.getString("name");

int age = jsonobj.getInt("age");

System.out.println("name = " + name + ",age = " + age);

}

}

嵌套的JSONObject和JSONArray代码

public static void jsonObjectAndArrayTest() {

String jsonstring = "{'name':'xiazdong','age':20,'book':['book1','book2']}";

JSONObject jsonobj = new JSONObject(jsonstring);

String name = jsonobj.getString("name");

System.out.println("name" + ":" + name);

int age = jsonobj.getInt("age");

System.out.println("age" + ":" + age);

JSONArray jsonarray = jsonobj.getJSONArray("book");

for (int i = 0; i < jsonarray.length(); i++) {

String book = jsonarray.getString(i);

System.out.println("book" + i + ":" + book);

}

}

3. JSONStringer

1. 是一个用于快速构造JSON文本的工具

2. JSONWriter的子类

3. bject():开始一个对象,即添加{;enObject():结束一个对象,即添加}

4. array():开始一个数组,即添加[; endArray():结束一个数组,即添加]

5. key():表示添加一个key;value():表示添加一个value

public static void jsonStringerTest() {

JSONStringer stringer = new JSONStringer();

stringer.object().key("name").value("xiazdong").key("age").value(20).endObject();

System.out.println(stringer);

}

4. JSONTokener

它和JSONObject和JSONArray的构造函数一起使用,用于解析JSON源字符串。

public static void JSONTokenerTest() throws FileNotFoundException {

JSONObject jsonobj = new JSONObject(new JSONTokener(new FileReader(new File("1.txt"))));

System.out.println(jsonobj.getJSONObject("session").getJSONArray("signing").getJSONObject(1).getJSONObject("book").getString("title"));

}

格式转换

1. String 转换为JSON对象

public class StringToJSON {

public static void main(String[] args) throws JSONException{

//定义JSON字符串

String jsonStr = "{\"id\": 2," +

" \"title\": \"json title\", " +

"\"config\": {" +

"\"width\": 34," +

"\"height\": 35," +

"}, \"data\": [" +

"\"JAVA\", \"JavaScript\", \"PHP\"" +

"]}";

//转换成为JSONObject对象

JSONObject jsonObj = new JSONObject(jsonStr);

//从JSONObject对象中获取数据

JavaBean bean = new JavaBean();

//根据属性名称获取int型数据;

bean.setId(jsonObj.getInt("id"));

//根据属性名获取String数据;

bean.setTitle(jsonObj.getString("title"));

//根据属性名获取JSONObject类

JSONObject config = jsonObj.getJSONObject("config");

bean.setWidth(config.getInt("width"));

bean.setHeight(config.getInt("height"));

//根据属性名获取JSONArray数组

JSONArray data = jsonObj.getJSONArray("data");

for(int index = 0, length = data.length(); index < length; index++) {

}

}

}

2. JSON对象转换为String字符串

public static void main(String[] args) throws JSONException {

//创建JSONObject对象

JSONObject json = new JSONObject();

//向json中添加数据

json.put("username", "wanglihong");

json.put("height", 12.5);

json.put("age", 24);

//创建JSONArray数组,并将json添加到数组

JSONArray array = new JSONArray();

array.put(json);

//转换为字符串

String jsonStr = array.toString();

System.out.println(jsonStr);

}

最终输出结果为: [{"username":"wanglihong","height":12.5,"age":24}]

3. 集合转换为JSONArray对象

public static void main(String[] args) throws JSONException {

//初始化ArrayList集合并添加数据

List < String > list = new ArrayList < String > ();

list.add("username");

list.add("age");

list.add("sex");

//初始化HashMap集合并添加数组

Map map = new HashMap();

map.put("bookname", "CSS3实战");

map.put("price", 69.0);

//初始化JSONArray对象,并添加数据

JSONArray array = new JSONArray();

array.put(list);

array.put(map);

//生成的JSON字符串为:[["username","age","sex"],{"price":69,"bookname":"CSS3实战"}]

}

解析例子

public class OrgJsonTest {

public static String BuildJson() throws JSONException {

// JSON格式数据解析对象

JSONObject jo = new JSONObject();

// 下面构造两个map、一个list和一个Employee对象

Map map1 = new HashMap();

map1.put("name", "Alexia");

map1.put("sex", "female");

map1.put("age", "23");

Map map2 = new HashMap();

map2.put("name", "Edward");

map2.put("sex", "male");

map2.put("age", "24");

List list = new ArrayList();

list.add(map1);

list.add(map2);

Employee employee = new Employee();

employee.setName("wjl");

employee.setSex("female");

employee.setAge(24);

// 将Map转换为JSONArray数据

JSONArray ja = new JSONArray();

ja.put(map1);

System.out.println("JSONArray对象数据格式:");

System.out.println(ja.toString());

// 将Javabean转换为Json数据(需要Map中转)

JSONObject jo1 = JsonHelper.toJSON(employee);

System.out.println("\n仅含Employee对象的Json数据格式:");

System.out.println(jo1.toString());

// 构造Json数据,包括一个map和一个含Employee对象的Json数据

jo.put("map", ja);

jo.put("employee", jo1.toString());

System.out.println("\n最终构造的JSON数据格式:");

System.out.println(jo.toString());

return jo.toString();

}

/**

* 解析Json数据

*/

public static void ParseJson(String jsonString) throws JSONException,

ParseException {

JSONObject jo = new JSONObject(jsonString);

JSONArray ja = jo.getJSONArray("map");

System.out.println("\n将Json数据解析为Map:");

System.out.println("name: " + ja.getJSONObject(0).getString("name")

+ " sex: " + ja.getJSONObject(0).getString("sex") + " age: "

+ ja.getJSONObject(0).getInt("age"));

String jsonStr = jo.getString("employee");

Employee emp = new Employee();

JsonHelper.toJavaBean(emp, jsonStr);

System.out.println("\n将Json数据解析为Employee对象:");

System.out.println("name: " + emp.getName() + " sex: " + emp.getSex()

+ " age: " + emp.getAge());

}

public static void main(String[] args) throws JSONException, ParseException {

// TODO Auto-generated method stub

ParseJson(BuildJson());

}

}

751.html

运行结果:

7312beca0b5ea27be82e60804e9ccbe5.png

总结

json解析的步骤:

1. 需要进行创建Gson解析器

2. 创建JSONObject对象

3. 将json数据转为为相应的数据

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值