软件系统定制开发JSON转换问题最全详解(json转List,json转对象,json转JSONObject)

com.alibaba.软件系统定制开发包下相关方法

JSON相关

1.json转对象

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

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);
  • 1
  • 2
  • 3
  • 4

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>>>() {});
  • 1
  • 2
  • 3
  • 4

3.对象转json

JSON.toJSONString(user);
  • 1

4.List转json

JSON.toJSONString(users);
  • 1

JSONObject相关:

1.json转方法

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

2.JSONObject转json方法

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

3.JSONObject转List

简单类型的:(json字段与接收字段一致的时候)
例:json:

{	"count": 3,	"servers": [{		"fault": null,		"id": "5c1ac257-",		"cpu_options": {			"hw:cpu_threads": null		}	}]}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
       JSONObject jsonObject = JSON.parseObject(json);	// 获取到我们的jsonobject参数,并toJSONString       String s = JSONArray.toJSONString(jsonObject.get("servers"));	// 将json字符串转换为集合对象(实体类就省略了啊)       List<AnswerCardVo> cardVos = JSONArray.parseArray(s, AnswerCardVo.class);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4.Map转JSONObject

//直接调用new方法JSONObject jsonObject = new JSONObject(map);
  • 1
  • 2



以上内容是接收字段与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		}	}]}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

可以看到注解@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;    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

转List

方法一:

@Autowiredprivate 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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

方法二:

@Autowiredprivate ObjectMapper objectMapper;String json = "";List<HwInstance>  instances = objectMapper.readValue(objectMapper.readTree(json).get("servers").toString(),new TypeReference<List<HwInstance>>(){});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注意:可能会遇到报错的情况如下:
报错信息:com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field “isleader”
意思是json’中的字段与实体类不匹配,解决办法如下:
办法一:给objectMapper设置一个属性
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
办法二:给实体类加一个注解
@JsonIgnoreProperties(ignoreUnknown = true)

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发