java处理json格式字符串,首先转成 JSONArray 或 JSONObject 类型(如果有实际对象类的话,也可以直接转成对象)
JSONArray array = JSONArray.parseArray(text);
JSONObject result = JSONArray.parseObject(text);
就相当于 JSONArray 和 JSONObject 可以相互嵌套, JSON对象的用法和java中 List Map 用法是一样的!
1-可以通过JSONArray循环获取每一项的值 有get 和 add 方法 取值 赋值
2-JSONObject 可以 通过 get 和 put 方法取值赋值
处理完数据后,还可以通过 toJSONString方法转为字符串
JSONArray feedetailList = data.getJSONArray("feedetailList");
for (int i = 0; i < feedetailList.size(); i++) {
feedetailList.getJSONObject(i).put("psnNo",data.getString("psnNo"));
}
(1)因为没有具体的对象,所以将json直接转成json数组JSONObject
(2)在取嵌套的内容时,如果是数组就用getJSONArray,如果是对象就用getJSONObject
(3)要往数组里存入值就用add,取值就用get;要往对象里存入值就用set,取值就用get
// 实时更新数据
DataModelRelation dataModelRelation = indDataModel.getDataModelRelation();
String layout = dataModelRelation.getLayout();
// 解析 JSON 字符串为 JSONObject
JSONObject jsonObject = new JSONObject(layout);
// 获取最底层的 JSONArray
JSONArray layoutInfo = jsonObject.getJSONArray("cells");
for (int i = 0; i < layoutInfo.size(); i++) {
JSONObject cell = layoutInfo.getJSONObject(i);
JSONObject data = cell.getJSONObject("data");
if (ObjectUtil.isNotNull(data)) {
String id = data.get("id").toString();
if (ObjectUtil.isNotNull(id)) {
IndTable indTable = iIndTableRepo.queryById(Long.valueOf(id));
if (ObjectUtil.isNotNull(indTable)) {
layoutInfo.getJSONObject(i).getJSONObject("data").set("tableNameZh",indTable.getTableNameZh());
}
}
}
}
jsonObject.set("cells",layoutInfo);
dataModelRelation.setLayout(JSONUtil.toJsonStr(jsonObject));
indDataModel.setDataModelRelation(dataModelRelation);
JSONUtil.toJsonStr可以将任意对象(Bean、Map、集合等)直接转换为JSON字符串。 如果对象是有序的Map等对象,则转换后的JSON字符串也是有序的。
/**
* 转换为JSON字符串
*
* 被转为JSON的对象
*
* @return JSON字符串
*/
@Test
void toJsonStrTest() {
//map
SortedMap<Object, Object> sortedMap = new TreeMap<Object, Object>() {
private static final long serialVersionUID = 1L;
{
put("attributes", "a");
put("b", "b");
put("c", "c");
}
};
//对象
Student beanString = new Student(1, 1, 1, "张三");
//集合
List<Student> list = new ArrayList<>();
list.add(new Student(1, 1, 1, "张三"));
list.add(new Student(1, 1, 2, "李四"));
list.add(new Student(1, 1, 3, "王五"));
System.out.println("JSONUtil.toJsonStr(beanString) = " + JSONUtil.toJsonStr(beanString));
System.out.println("JSONUtil.toJsonStr(sortedMap) = " + JSONUtil.toJsonStr(sortedMap));
System.out.println("JSONUtil.toJsonStr(list) = " + JSONUtil.toJsonStr(list));
}
结果
JSONUtil.toJsonStr(beanString) = {"gradeId":0,"studentId":1,"termId":1,"classId":1,"name":"张三"}
JSONUtil.toJsonStr(sortedMap) = {"attributes":"a","b":"b","c":"c"}
JSONUtil.toJsonStr(list) = [{"gradeId":0,"studentId":1,"termId":1,"classId":1,"name":"张三"},
{"gradeId":0,"studentId":2,"termId":1,"classId":1,"name":"李四"},
{"gradeId":0,"studentId":3,"termId":1,"classId":1,"name":"王五"}]
如果我们想获得格式化后的JSON,则:
JSONUtil.toJsonPrettyStr(object);
System.out.println("JSONUtil.toJsonPrettyStr(sortedMap) = "
+ JSONUtil.toJsonPrettyStr(sortedMap));
结果
JSONUtil.toJsonPrettyStr(sortedMap) = {
"attributes": "a",
"b": "b",
"c": "c"
}
/**
* JSON字符串转JSONObject对象
*
* JSON字符串
*
* @return JSONObject
*/
@Test
void Test() {
String html = "{\"name\":\"Something must have been changed since you leave\"}";
JSONObject jsonObject = JSONUtil.parseObj(html);
System.out.println("jsonObject.getStr(\"name\") = " + jsonObject.getStr("name"));
}
结果
jsonObject.getStr("name") = Something must have been changed since you leave
/**
* XML字符串转为JSONObject
*
* XML字符串
* @return JSONObject
*/
@Test
void parseFromXmlTest() {
String s = "123 456 aa 1 ";
JSONObject json = JSONUtil.parseFromXml(s);
System.out.println("json.get(\"sfzh\") = " + json.get("sfzh"));
System.out.println("json.get(\"name\") = " + json.get("name"));
}
结果
json.get("sfzh") = 123
json.get("name") = aa
/**
* 转换为XML字符串
*
* @param json JSON
* @return XML字符串
*/
@Test
void toXmlStrTest() {
final JSONObject put = JSONUtil.createObj()
.set("aaa", "你好")
.set("键2", "test");
// 你好 <键2>test键2>
final String s = JSONUtil.toXmlStr(put);
System.out.println("s = " + s);
}
结果
s = <aaa>你好</aaa><键2>test</键2>
我们先定义两个较为复杂的Bean(包含泛型)
@Data
public class ADT {
private List<String> BookingCode;
}
@Data
public class Price {
private List<List<ADT>> ADT;
}
/**
* JSON字符串转为实体类对象,转换异常将被抛出
*
* @param Bean类型
* @param jsonString JSON字符串
* @param beanClass 实体类对象
* @return 实体类对象
* @since 3.1.2
*/
@Test
void toBeanTest() {
String json = "{\"ADT\":[[{\"BookingCode\":[\"N\",\"N\"]}]]}";
Price price = JSONUtil.toBean(json, Price.class);
System.out.println("price = " + price);
}
put(key, value): 向JSON对象中添加键值对。
get(key): 获取JSON对象中指定键的值。
getString(key): 获取JSON对象中指定键的字符串值。
getInt(key): 获取JSON对象中指定键的整数值。
getJSONObject(key): 获取JSON对象中指定键的嵌套JSON对象。
getJSONArray(key): 获取JSON对象中指定键的JSON数组。
toString(): 将JSON对象转换为字符串。
parse(jsonString): 解析JSON字符串为JSON对象。
toBean(jsonString,class):将JSON转换为Java对象
toJsonStr(object):将Java对象转换为JSON字符串
使用实例
javaCopy codeimport com.example.JSONUtil; // 假设这是的JSONUtil类
public class JSONUtilExample {
public static void main(String[] args) {
// 创建JSON对象
JSONUtil jsonUtil = new JSONUtil();
jsonUtil.put("name", "John");
jsonUtil.put("age", 30);
// 将JSON转为字符串
String jsonString = jsonUtil.toString();
System.out.println("JSON String: " + jsonString);
// 解析JSON字符串
JSONUtil parsedJSON = JSONUtil.parse(jsonString);
String name = parsedJSON.getString("name");
int age = parsedJSON.getInt("age");
System.out.println("Name: " + name);
System.out.println("Age: " + age);
//使用JSONUtil.toBean将JSON转换为Java对象
//假设从某个来源获取了一个JSON字符串
String jsonString = "{\"name\":\"John\",\"age\":30}";
Person person = JSONUtil.toBean(jsonString, Person.class);
// 使用JSONUtil.toJsonStr将Java对象转换为JSON字符串
Person person = new Person("John", 30, new String[]{"Reading", "Gaming"});
String jsonStr = JSONUtil.toJsonStr(person);
}
}