日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JSON转换问题最全详解(json转List,json转对象,json转JSONObject)

發布時間:2023/12/10 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JSON转换问题最全详解(json转List,json转对象,json转JSONObject) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

com.alibaba.fastjson包下相關方法

JSON相關

1.json轉對象

Student o = JSONObject.parseObject(jsonString, Student.class);

2.json轉List

json: 花括號{}

String jsonString =[{"id":1, "name": "zhangsan", "sex": "male", "age": 18, :city": "Beijing"},{"id": 2, "name": "lisi", "sex": "female", "age": 18, "city": "Shanghai"}]List<Student> studentList = JSONObject.parseArray(jsonString, Student.class);

json: 方括號[]
將JSON字符串看成是list嵌套list的格式,即List< List< Object> >,獲取到list之后,循環list,依次獲取內層List< Object >,通過get(0)獲取id,get(1)獲取name……。

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);

JSONObject相關:

1.json轉JSONObject方法

String json = "";JSONObject jsonObject = JSON.parseObject(json);

2.JSONObject轉json方法

//使用方法 jsonObject.getString(key);

3.JSONObject轉List

簡單類型的:(json字段與接收字段一致的時候)
例:json:

{"count": 3,"servers": [{"fault": null,"id": "5c1ac257-","cpu_options": {"hw:cpu_threads": null}}] } JSONObject jsonObject = JSON.parseObject(json);// 獲取到我們的jsonobject參數,并toJSONStringString s = JSONArray.toJSONString(jsonObject.get("servers"));// 將json字符串轉換為集合對象(實體類就省略了啊)List<AnswerCardVo> cardVos = JSONArray.parseArray(s, AnswerCardVo.class);

4.Map轉JSONObject

//直接調用new方法 JSONObject jsonObject = new JSONObject(map);


以上內容是接收字段與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;}

轉List

方法一:

@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转List,json转对象,json转JSONObject)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。