1、json和字符串互转
1.1 字符串转json对象
JSONObject jsonObject = JSONObject.parseObject("");
1.2 json对象转字符串
private static void testJsonObjectToJsonStr(JSONObject jsonObject) {
String jsonStr = jsonObject.toJSONString();
System.out.println(jsonStr);
}
2.json数组和字符串互转
2.1 json数组转字符串
String arrStr = JSONArray.toJSONString(jsonArray);
2.2 json字符串转json数组
private static JSONArray testJsonStrToJSONArray(String jsonString) {
JSONObject jsonObject = JSONObject.parseObject(jsonString);
//获取data数据,然后读取data数据中datastreams关键字对应的数组(有[]标示的为数组)
JSONArray jsonArray1 = jsonObject.getJSONObject("data").getJSONArray("datastreams");
//获取JsonArray下标对应的JsonObject
JSONObject jsonArray2 = jsonArray1.getJSONObject(0);
//其中的关键字datapoints对应的也是一个JsonObject数组
JSONArray jsonArray3 = jsonArray2.getJSONArray("datapoints");
System.out.println(jsonArray3);
/* int size = jsonArray3.size();
//遍历1
for(int i = 0; i < size; i++) {
System.out.println(jsonArray3.getJSONObject(i));
}*/
//遍历2
for(Object object: jsonArray3){
System.out.println(object);
}
return jsonArray3;
}
3.JavaBean与Json对象之间的转化
3.1 json对象转Javabean
JSONObject jsonObject = JSONObject.parseObject(beanStr);
//第一种方式:使用TypeRefernce<T>,由于其构造方式使用protected进行修饰,故创建其子类
Datapoint datapoint = JSONObject.parseObject(jsonObject.toJSONString(),new TypeReference<Datapoint>() {});
3.2Javabean转json对象
String jsonString = JSONObject.toJSONString(datapoint);
4.JavaList对象数组与JsonArray之间的转化
/**
* 将JavaBeanList 转化为JsonArray
*/
private static void testJavaListToJsonArray() {
//模拟一个List<JabaBean>
Location location1 = new Location();
Location location2 = new Location();
Datapoint datapoint1 = new Datapoint();
Datapoint datapoint2 = new Datapoint();
List<Datapoint> datapoints = new ArrayList<Datapoint>();
location1.setLon("1122");
location1.setLat("2233");
datapoint1.setAt("2018-01-02");
datapoint1.setValue(location1);
datapoints.add(datapoint1);
location2.setLon("3344");
location2.setLat("4455");
datapoint2.setAt("2018-01-03");
datapoint2.setValue(location2);
datapoints.add(datapoint2);
//方法一:
String arrString = JSONArray.toJSONString(datapoints);
JSONArray jsonArray = JSONArray.parseArray(arrString);
System.out.println(jsonArray);
//方法二:
JSONArray jsonArray1 = (JSONArray) JSONArray.toJSON(datapoints);
System.out.println(jsonArray1);
}
//JavaList与JsonArray之间的转换
private static void testJsonArrayToJavaList(String jsonString) {
//已知JsonArray
JSONArray jsonArray = testJsonStrToJSONArray(jsonString);
//方法一:使用TypeReference<T>类,由于其构造方法使用protected进行修饰,故创造其子类
List<Datapoint> datapoints = JSONArray.parseObject(jsonArray.toJSONString(),new TypeReference<ArrayList<Datapoint>>() {});
System.out.println(datapoints);
//方法二:使用Gson的思想
List<Datapoint> datapoints1 = JSONArray.parseArray(jsonArray.toJSONString(),Datapoint.class);
System.out.println();
}
5.json字符串转map
JSONObject obj = new JSONObject();
{
obj.put("key1", "value1");
obj.put("key2", "value2");
obj.put("key3", "value3");
}
Map<String, String> params = JSONObject.parseObject(obj.toJSONString(), new TypeReference<Map<String, String>>(){});
System.out.println(params);
//输出:{key3=value3, key2=value2, key1=value1}