JSON.parseArray()
工作中设计到JSON相关的操作比较多,记录一点发一点 备忘
JSON常用来作为格式转换,前几天将一个封装了几层的Body数据拆出来,获取一个字段内容,发给客户。。。
JSON.parsearray()
假设有个Vo类
public class Student{
public String id;
public String name;
public Integer age;
}
这个对象有3个对应的属性值
如果有这样的JSON字符串 名字为data
[{“id”:“1”,“name”:“byron”,“age”:25},{“id”:“2”,“name”:“Caroline”,“age”:24},{“id”:“3”,“name”:“tinker”,“age”:21}]
List list = JSON.parseArray(data.Student.class);
这里的JSON.parseArray方法的参数中data,是字符串,第二个是Student类
这个方法在这的作用是将data中的数据,按照Student类,将json转换存到list集合中。
JSON.parseObject()
工作中遇到了,需要一层一层去获取一大串字段中的一个值,这里为了把这一段JSON获取其中的ZH-CN的value值,用JSON的方式去解析它
先把String类型,转换为JSON格式
{"formId":"xxx","applyUserName":"byron","formType":"mulLangJson","mulLangJson":{"formType":{"EN-US":"Business Travel Request","DE-DE":"Business Travel Request","KO-KR":"Business Travel Request","ZH-HK":"Business Travel Request","ZH-TW":"Business Travel Request","TH-TH":"Business Travel Request","FR-FR":"Business Travel Request","JA-JP":"Business Travel Request","ZH-CN":"出差申请单","VI-VN":"Business Travel Request"}},"key":"notice.wkf.AR.TRAVEL.S.WT"}
public JSONObject getFormName(String jsonStr){
JSONObject returnJson = new JSONObject();
returnJson.put("formName","申请单");
JSONObject paramJson;
try{
//String formResult = formId.split("-")[0];
paramJson = JSON.parseObject(jsonStr);
String mulLangJson = paramJson.getString("mulLangJson");
if (null == mulLangJson || "".equals(mulLangJson)) {
return returnJson;
}
JSONObject formType = JSON.parseObject(mulLangJson);
String detail = formType.get("formType").toString();
JSONObject zh_formName = JSON.parseObject(detail);
String result = zh_formName.get("ZH-CN").toString();
returnJson.put("formName",result);
return returnJson;
}catch (Exception e){
logger.error("获取多语言翻译表单名称出错:{},{}",e,e.getMessage());
e.printStackTrace();
return returnJson;
}
}
总体思路:通过一次JSON.parseObject解析成JSON给是,get方法获取其中的信息,多次使用。
可以考虑使用上面的JSON.parseArray(),可能更方便,没有试。