您好,登錄后才能下訂單哦!
這篇文章主要講解了“JSON各種轉換問題怎么解決”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JSON各種轉換問題怎么解決”吧!
首先引入jar包:
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency>
1.json轉對象
Student o = JSONObject.parseObject(jsonString, Student.class);
2.json轉List
List<Student> studentList = JSONObject.parseArray(jsonString, Student.class);
或者
String jsonString = “[[1,"zhangsan","male",18,"Beijing"],[2,"lisi","female",18,"Shanghai"]]” List<List<Object>> list = JSON.parseObject([jsonString], new TypeReference<List<List<Object>>>() {});
3.對象轉json
JSON.toJSONString(user);
4.List轉json
JSON.toJSONString(users);
1.json轉JSONObject方法
String json = ""; JSONObject jsonObject = JSON.parseObject(json);
2.JSONObject轉json方法
jsonObject.getString(key);
3.JSONObject轉List
JSONObject jsonObject = JSON.parseObject(json); // 獲取到我們的jsonobject參數,并toJSONString String s = JSONArray.toJSONString(jsonObject.get("servers")); // 將json字符串轉換為集合對象(實體類就省略了啊) List<AnswerCardVo> cardVos = JSONArray.parseArray(s, AnswerCardVo.class);
4.Map轉JSONObject
//直接調用new方法
Map map1 = new HashMap(); map1.put("one",users1); map1.put("two",users1); JSONObject mapJsonObject =(JSONObject) JSONObject.toJSON(map1); System.out.println(mapJsonObject);
以上內容是接收字段與json字段一致的時候,那么不一致的時候怎么處理?
com.fasterxml.jackson包
例:json串內容如下,要轉成List
注意:可以看到,該json串中屬性名是這樣的OS-EXT-STS:task_state,那么我們接收的bean就無法寫成這個屬性名去接收,所以需要在接收Bean中使用注解@JsonProperty進行處理
json串
{ "count": 3, "servers": [{ "fault": null, "id": "5c1ac257-", "OS-EXT-STS:task_state": null, "cpu_options": { "hw:cpu_threads": null } }] }
可以看到注解@JsonProperty中指定了要接收哪個的值,這樣就可以正常轉換了
對象:
public class HwInstance { private String fault; private String id; @JsonProperty("OS-EXT-STS:task_state") private String state; @JsonProperty("cpu_options") private Object options; }
方法一:
@Autowired private ObjectMapper objectMapper; String json = ""; JSONObject jsonObject = JSON.parseObject(json); JavaType javaType = objectMapper.getTypeFactory().constructParametricType(ArrayList.class, HwInstance.class); List<HwInstance> instances = objectMapper.readValue(objectMapper.readTree(jsonObject.toJSONString()).get("servers").toString(), javaType);
方法二:
@Autowired private ObjectMapper objectMapper; String json = ""; List<HwInstance> instances = objectMapper.readValue(objectMapper.readTree(json).get("servers").toString(),new TypeReference<List<HwInstance>>(){});
注意:可能會遇到報錯的情況如下:
報錯信息:com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field “isleader”
意思是json’中的字段與實體類不匹配,解決辦法如下:
辦法一:給objectMapper設置一個屬性
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
辦法二:給實體類加一個注解
@JsonIgnoreProperties(ignoreUnknown = true)
感謝各位的閱讀,以上就是“JSON各種轉換問題怎么解決”的內容了,經過本文的學習后,相信大家對JSON各種轉換問題怎么解決這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。