@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class CommonMessage<T> {
@JSONField(name="authInfo") private CommonAuthInfo authInfo;
@JSONField(name="reqInfo") private T reqInfo;
private String test;
}
@Data
public static class CommonPolicyReqInfo {
@JSONField(name="serialnumber") private String serialNumber;
@JSONField(name="frontid") private String frontid;
@JSONField(name="policyinfo") private List<PolicyInfoResponse> policyinfo;
// @JSONField(name="rspInfo",serialzeFeatures= {SerializerFeature.WriteNullStringAsEmpty})
// private CommonRspInfo rspInfo = null;
}
/**
*@Description:
*@TimeBlock: hanxs-28rules 2020-09-22
*/
@Test
public void jsonValue(){
CommonPolicyReqInfo commonPolicyReqInfo = new CommonPolicyReqInfo();
commonPolicyReqInfo.setFrontid("1");
CommonMessage<CommonPolicyReqInfo> objectCommonMessage = new CommonMessage<>();
objectCommonMessage.setTest("test");
objectCommonMessage.setReqInfo(commonPolicyReqInfo);
//对象转为json字符串时,只会转化赋值的字段,空值字段会丢失
String s = JSON.toJSONString(objectCommonMessage);
System.out.println(s);//{"reqInfo":{"frontid":"1"},"test":"test"}
String ss="{\"reqInfo\":{\"frontid\":\"1\"},\"test\":\"test\",\"test1\":\"test\"}";
JSONObject jsonO = JSON.parseObject(ss);
// System.out.println(jsonO.getString("test"));
System.out.println(jsonO.toJSONString());
if(jsonO.containsKey("test1")) jsonO.remove("test1");
System.out.println(jsonO.toJSONString());
//CommonPolicyReqInfo.class是内部类,需加static,否则会报错
//json字符串里的字段相对于映射的对象的字段不完整时,不会报错
CommonPolicyReqInfo reqInfo = jsonO.getObject("reqInfo", CommonPolicyReqInfo.class);
System.out.println(JSON.toJSONString(reqInfo));
//json字符串里有映射对象里没有的字段时,会失败;
// CommonMessage<CommonPolicyReqInfo> commonMessage = JSON.parseObject(ss, CommonMessage.class);
// System.out.println(JSON.toJSONString(commonMessage));
}