com.alibaba.fastjson.JSONObject

net.sf.json.JSONObject

org.json.JSONObject

java对象和json数据之间的转换方式一般有两种,一种是引用第三方的jar包,如Gson(谷歌)、Fastjson(阿里)、Jackson等,这种方式优点是语法精练,可以实现一句话转化,但缺点是会引入庞大的第三方库。第二种是直接使用Java自带的org.json解析,但这个库功能比较基础,解析会写很多重复的代码。

一 、com.alibaba.fastjson.JSONObject的使用

1 POM.xml

com.alibaba

fastjson

1.2.51

2 Json字符串与Map、List、object之间的相互转换

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONArray;

import com.alibaba.fastjson.JSONObject;

public class TestFastJson {

public static void main(String[] args){

json2JsonObject();//将Json字符串转换为JSONObject对象

json2JavaBean();//将Json字符串转换为JavaBean对象

json2JsonArray();//将Json字符串转换为JSONArray对象

json2JavaBeanList();//将Json字符串转换为JavaBean的集合

javaBean2Json();//将JavaBean转换为Json格式的数据

javaBean2JsonObject();//将JavaBean转换为JSONObject对象

json2ListInMap();//从Json字符串的Map中获取List对象

list2JsonInMap();//将含list的Map对象转换为Json字符串

stringToMap();//json字符串转map

mapToString();//map转json字符串

mapToJsonObject();//map转json对象

testList2String();//list转json字符串

}

private static void json2JsonObject() {

String s = "{\"name\":\"peter\"}";

JSONObject object = JSON.parseObject(s);

System.out.println(object.get("name"));

}

private static void json2JavaBean() {

String s = "{\"id\":\"17051801\",\"name\":\"lucy\"}";

User user = JSON.parseObject(s, User.class);

System.out.println(user.getId());

System.out.println(user.getName());

}

private static void json2JsonArray() {

String s = "[{\"id\":\"17051801\",\"name\":\"lucy\"},{\"id\":\"17051802\",\"name\":\"peter\"}]";

JSONArray array = JSON.parseArray(s);

for (int i = 0; i < array.size(); i++) {

//JSONArray中的数据转换为String类型需要在外边加"";不然会报出类型强转异常!

String str = array.get(i)+"";

JSONObject object = JSON.parseObject(str);

System.out.println(object.get("name"));

}

}

private static void json2JavaBeanList() {

String s = "[{\"id\":\"17051801\",\"name\":\"lucy\"},{\"id\":\"17051802\",\"name\":\"peter\"}]";

List list = JSON.parseArray(s, User.class);

for (User user : list) {

System.out.println(user.getName());

}

}

private static void javaBean2Json() {

User user = new User("17051801", "lucy");

String string = JSON.toJSONString(user);

System.out.println(string);

}

private static void javaBean2JsonObject() {

User user = new User("17051801", "lucy");

JSONObject json = (JSONObject) JSON.toJSON(user);

System.out.println(json.get("id"));

}

private static void json2ListInMap() {

String s = "{json:[{id:\"17051801\",\"name\":\"lucy\"},{id:\"17051802\",\"name\":\"peter\"},"

+ "{id:\"17051803\",\"name\":\"tom\"},{id:\"17051804\",\"name\":\"lily\"}]}";

//将Json字符串转换为JSONObject对象,并取出list对象的值

JSONObject object = JSON.parseObject(s);

Object objArray = object.get("json");

String str = objArray+"";

//方式1:转换成JSONArray对象形式

JSONArray array = JSON.parseArray(str);

for (int i = 0; i < array.size(); i++) {

JSONObject obj = JSON.parseObject(array.get(i)+"");

System.out.println(obj.get("name"));

}

//方式2:转换成List形式

List list = JSON.parseArray(str, User.class);

for (User user : list) {

System.out.println(user.getName());

}

}

private static void list2JsonInMap() {

//方式1:构建一个带有list的JavaBean对象

School school = new School();

school.setId("1");

school.setName("schoolA");

User user1 = new User();

user1.setId("17051801");

user1.setName("lucy");

User user2 = new User();

user2.setId("17051802");

user2.setName("peter");

school.getStudents().add(user1);

school.getStudents().add(user2);

//将JavaBean对象转换成Json字符串

String string1 = JSON.toJSONString(school);

System.out.println(string1);

//方式2:构建一个带有list的Map对象

Map map1 = new HashMap();

map1.put("id", "17051801");

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

Map map2 = new HashMap();

map2.put("id", "17051802");

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

List> list = new ArrayList>();

list.add(map1);

list.add(map2);

Map map = new HashMap();

map.put("id", "1");

map.put("name", "schoolA");

map.put("students", list);

//将map对象转换成Json字符串

String string2 = JSON.toJSONString(map);

System.out.println(string2);

}

private static void stringToMap(){

String str = "{\"age\":\"24\",\"name\":\"cool_summer_moon\"}";

JSONObject jsonObject = JSONObject.parseObject(str);

//json对象转Map

Map map = (Map)jsonObject;

System.out.println("map对象是:" + map);

Object object = map.get("age");

System.out.println("age的值是"+object);

}

private static void mapToString(){

Map map = new HashMap<>();

map.put("age", 24);

map.put("name", "cool_summer_moon");

String jsonString = JSON.toJSONString(map);

System.out.println("json字符串是:"+jsonString);

}

private static void mapToJsonObject(){

Map map = new HashMap<>();

map.put("age", 24);

map.put("name", "cool_summer_moon");

JSONObject json = new JSONObject(map);

System.out.println("Json对象是:" + json);

}

/**

* 测试包装类型的List转换为json字符串

*/

public static void testList2String() {

List longs = new ArrayList();

longs.add(1L);

longs.add(2L);

longs.add(3L);

String actual = JSON.toJSONString(longs);

Assert.assertEquals("[1,2,3]", actual);

}

}

二 、org.json.JSONObject的使用

1.引入org.json依赖

org.json

json

20160810

3.JSONObject转javaBean

public static void main(String[] args) {

String str="{\"student\":[{\"name\":\"leilei\",\"age\":23},{\"name\":\"leilei02\",\"age\":23}]}";

Student stu = null;

List list = null;

try {

ObjectMapper objectMapper=new ObjectMapper();

StudentList studentList=objectMapper.readValue(str, StudentList.class);

list=studentList.getStudent();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

for(Student s:list){

System.out.println(s.getName());

}

}

ObjectMapper objectMapper=new ObjectMapper();

out = objectMapper.readValue(org.json.JSONObject.valueToString(arg0), OutputObject.class);

三 net.sf.json.JSONObject的使用

1 引入maven依赖

最后一行需要保留,有两个jdk版本的实现:json-lib-2.1-jdk13.jar和json-lib-2.1-jdk15.jar

net.sf.json-lib

json-lib

2.4

jdk15

使用范例

package json;

import net.sf.json.JSON;

import net.sf.json.JSONObject;

import net.sf.json.xml.XMLSerializer;

public class JSONObject_1_3 {

public static void javaToJSON() {

System.out.println("java代码封装为json字符串");

JSONObject jsonObj = new JSONObject();

jsonObj.put("username", "张三");

jsonObj.put("password", "123456");

System.out.println("java--->json \n" + jsonObj.toString());

}

public static void jsonToJAVA() {

System.out.println("json字符串转java代码");

String jsonStr = "{\"password\":\"123456\",\"username\":\"张三\"}";

JSONObject jsonObj = JSONObject.fromString(jsonStr);

String username = jsonObj.getString("username");

String password = jsonObj.optString("password");

System.out.println("json--->java\n username=" + username

+ "\t password=" + password);

}

public static void jsonToXML() {

System.out.println("json字符串转xml字符串");

String jsonStr = "{\"password\":\"123456\",\"username\":\"张三\"}";

JSONObject json = JSONObject.fromString(jsonStr);

XMLSerializer xmlSerializer = new XMLSerializer();

xmlSerializer.setRootName("user_info");

xmlSerializer.setTypeHintsEnabled(false);

String xml = xmlSerializer.write(json);

System.out.println("json--->xml \n" + xml);

}

public static void javaBeanToJSON() {

System.out.println("javabean转json字符串");

UserInfo userInfo = new UserInfo();

userInfo.setUsername("张三");

userInfo.setPassword("123456");

JSONObject json = JSONObject.fromBean(userInfo);

System.out.println("javabean--->json \n" + json.toString());

}

public static void javaBeanToXML() {

System.out.println("javabean转xml字符串");

UserInfo userInfo = new UserInfo();

userInfo.setUsername("张三");

userInfo.setPassword("123456");

JSONObject json = JSONObject.fromBean(userInfo);

XMLSerializer xmlSerializer = new XMLSerializer();

String xml = xmlSerializer.write(json, "UTF-8");

System.out.println("javabean--->xml \n" + xml);

}

public static void xmlToJSON(){

System.out.println("xml字符串转json字符串");

String xml = "123456张三";

JSON json=XMLSerializer.read(xml);

System.out.println("xml--->json \n"+json.toString());

}

public static void main(String args[]) {

javaToJSON();

jsonToJAVA();

jsonToXML();

javaBeanToJSON();

javaBeanToXML();

xmlToJSON();

}

}

转自:https://blog.csdn.net/zhengTornado/article/details/102832587