Java开发基础——JSON数据的构造与解析(二)
来源:互联网 发布:京瓷1020扫描软件 编辑:程序博客网 时间:2024/05/21 10:12
在我们的第一篇博客《Java开发基础——JSON数据的构造与解析》中我们使用FastJSON这个包来对JSON字符串做解析,使用起来非常方便,但是在实际使用中,FastJSON还需要做很多事情,比如对象与JSON字符串的转化,JSON与List等集合对象的转换等,该篇博客将会来使用FastJSON更细节的功能。
- JSON字符串数组转化为JSONArray
其实JSON.parseArray的功能和JSONArray.parseArray的功能是一样的,最好在代码中统一使用某种调用风格。使用该方法需要原先的字符串是一个JSON数组,即最外面是[]中括号。JSONArray里面是JSONObject对象。只要转化为JSONArray或者JSONObject,就可以很容易进行解析。
/**
* 解析JSON字符串数组,中括号表示的是数组,大括号表示的是对象
* @param args
*/
public static void main(String[] args) {
//JSON.parseArray的作用等同于JSONArray.parseArray
String jsonString = "[{\"type\":\"Boolean\",\"value1\":\"true\",\"value2\":\"false\"}]";
JSONArray jsonArray = JSON.parseArray(jsonString);
System.out.println("jsonArray:" + jsonArray);
JSONArray jsonArray1 = JSONArray.parseArray(jsonString);
System.out.println("jsonArray1:" + jsonArray1);
for (int i = 0; i < jsonArray.size(); i++) {
System.out.println("1" + jsonArray.get(i));
JSONObject jsonObject = (JSONObject) jsonArray.get(i);
System.out.println("2" + jsonObject);
String type = jsonObject.getString("type");
System.out.println("type:" + type);
String value = jsonObject.getString("value1");
System.out.println("value1:" + value);
String mayvalue = jsonObject.getString("value2");
System.out.println("value2:" + mayvalue);
}
}
- JSON字符串对象解析为JSONArray抛出异常
JSON.parseArray只能解析数组[],而不能是一个对象{},所以这里会抛出异常。
/**
* 这里会抛出异常,因为parseArray接收的不是一个数组
* @param args
*/
public static void main(String[] args) {
String jsonString = "{\"type\":\"Boolean\",\"value1\":\"true\",\"value2\":\"false\"}";
JSONArray jsonArray = JSON.parseArray(jsonString);
System.out.println("jsonArray:" + jsonArray);
for (int i = 0; i < jsonArray.size(); i++) {
System.out.println("1" + jsonArray.get(i));
JSONObject jsonObject = (JSONObject) jsonArray.get(i);
System.out.println("2" + jsonObject);
String type = jsonObject.getString("type");
System.out.println("type:" + type);
String value = jsonObject.getString("value1");
System.out.println("value1:" + value);
String mayvalue = jsonObject.getString("value2");
System.out.println("value2:" + mayvalue);
}
}
抛出异常如下:
- JSON字符串数组解析成JSONObject抛出异常
这里传入的是json字符串数组,不能使用JSON.parseObject去进行解析。
/**
* 这里也会抛出异常,jsonArray不能强转成jsonObject
* @param args
*/
public static void main(String[] args) {
String jsonString = "[{\"type\":\"Boolean\",\"value1\":\"true\",\"value2\":\"false\"}]";
JSONObject jsonObject = JSON.parseObject(jsonString);
System.out.println("jsonObject:" + jsonObject);
}
抛出异常如下:
- JSON字符串对象解析成JSONObject
JSON.parseObject和JSONObject.parseObject的使用也尽量在项目中统一,基本功能一样。
/**
* 解析JSON对象,JSON.parseObject等同于JSONObject.parseObject
* @param args
*/
public static void main(String[] args) {
String jsonString = "{\"type\":\"Boolean\",\"value1\":\"true\",\"value2\":\"false\"}";
JSONObject jsonObject = JSON.parseObject(jsonString);
System.out.println("jsonObject:" + jsonObject);
JSONObject jsonObject1 = JSONObject.parseObject(jsonString);
System.out.println("jsonObject1:" + jsonObject1);
}
- POJO对象,List集合,Map集合转化为JSONString
这里先写一个很简单的POJO类Person:
public class Person {
private String name;
private String age;
public Person() {
}
public Person(String name, String age) {
this.name = name;
this.age = age;
}
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;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
}
下面将会分别实现Person对象、List<String>、List<Person>、Map<String, String>、Map<String, Person>转化为JSONString(其实就是String),使用的方法是JSON.toJSONString.
/**
* 这里的案例是把对象转化成JSON字符串;
* @param args
*/
public static void main(String[] args) {
//单个对象转化为JSONString
Person person01 = new Person("chenyufeng","14");
String s = JSON.toJSONString(person01);
System.out.println("s:" + s);
//List对象转化为JSONString
List<String> list1 = new ArrayList<String>();
list1.add("1111");
list1.add("2222");
list1.add("3333");
String s3 = JSON.toJSONString(list1);
System.out.println("s3:" + s3);
//List对象转化为JSONString
Person person02 = new Person("chenyufeng2","142");
Person person03 = new Person("chenyufeng3","143");
List<Person> list = new ArrayList<Person>();
list.add(person01);
list.add(person02);
list.add(person03);
String s1 = JSON.toJSONString(list);
System.out.println("s1:" + s1);
//Map对象转化为JSONString
Map<String, String> map = new HashMap<String, String>();
map.put("1", "chenyufeng");
map.put("2", "gaowenjing");
String s2 = JSON.toJSONString(map);
System.out.println("s2:" + s2);
//Map对象转化为JSONString
Map<String, Person> map1 = new HashMap<String, Person>();
map1.put("1", person01);
map1.put("2", person02);
map1.put("3", person03);
String s4 = JSON.toJSONString(map1);
System.out.println("s4:" + s4);
}
- JSON字符串对象转化为POJO类对象
这种逆向转化也是可以实现的,方法是JSON.parseObject(string, clazz);
/**
* JSON字符串可以转化为POJO类对象;
* @param args
*/
public static void main(String[] args) {
Person person = new Person("chenyufeng", "12");
String s = JSON.toJSONString(person);
System.out.println("s:" + s);
Person person1 = JSON.parseObject(s, Person.class);
System.out.println("person:" + person1.toString());
}
- JSON字符串数组对象转化为List<T>对象
这种操作也可以互逆的,使用的方法是JSON.parseArray(string, clazz);
/**
* JSON数组字符串转化为List<T>对象;
* @param args
*/
public static void main(String[] args) {
Person person = new Person("chen", "12");
Person person1 = new Person("yufeng","24");
List<Person> list = new ArrayList<Person>();
list.add(person);
list.add(person1);
String s = JSON.toJSONString(list);
System.out.println("s:" + s);
List<Person> list1 = JSON.parseArray(s, Person.class);
System.out.println("list1:" + list1.toString());
}
阅读全文
1 1
- Java开发基础——JSON数据的构造与解析(二)
- Java开发基础——JSON数据的构造与解析
- Java构造与解析Json数据
- java构造与解析json数据
- Java构造和解析Json数据的两种方法(json-lib构造和解析Json数据, org.json构造和解析Json数据)
- Java构造和解析Json数据的两种方法详解二:使用JSON-lib库
- Java创建和解析Json数据方法(二)——org.json包的使用
- Java创建和解析Json数据方法(二)——org.json包的使用
- Java创建和解析Json数据方法(二)——org.json包的使用
- Java构造和解析Json数据的两种方法详解二
- Java构造和解析Json数据的两种方法详解二
- Java构造和解析Json数据的两种方法详解二
- Java构造和解析Json数据的两种方法详解二
- Java构造和解析Json数据的两种方法详解二
- Java构造和解析Json数据的两种方法详解二
- Java构造和解析Json数据的两种方法详解二
- Java构造和解析Json数据的两种方法详解二
- Java构造和解析Json数据的两种方法详解二
- Hamming(7,4)编译码器
- 双链表
- python与数据挖掘-笔记1
- Parameter 'username' not found. Available parameters are [0, 1, param1, param2]
- 删除元素
- Java开发基础——JSON数据的构造与解析(二)
- Leetcode(18)
- 本人博客已搬至 开源中国,此博客不再更新
- Day2
- 第五章 Analysis分析器
- 第3章 操作符与控制结构
- Word2016无法撤销解决方案-有效
- jQuery插件编写
- Windows下Git的EOL/CRLF的处理