根据以下java实体类拼接字符串,使用谷歌的GJONS可以解析,
1.Header header = (Header) gson.fromJson(json, Header.class);
2.Data entity = (Data) gson.fromJson(header.getData(), Data.class)
实体1 header
private String dataType;
private String sendTime;
private String data;
实体2 data
private T newData;
private List modProps;
private Object others;
实体3 ModProperty
private String name;
private FieldValue oldValue;
private FieldValue newValue;
实体4 FieldValue
private String vString;
private JsonArray vArray;
private JsonObject vObject;
我建议你先把实体用Gson转成json串,然后反向推出拼接字符串
通过重写toString方法,然后将每个对象按照一定顺序加在一起就可以完成拼接。
public class GsonTest {
static class Header {
private String dataType;
private String sendTime;
private String data;
//getter and setter
}
static class FieldValue {
private String vString;
private JsonArray vArray;
private JsonObject vObject;
//getter and setter
}
static class ModProperty {
private String name;
private FieldValue oldValue;
private FieldValue newValue;
//getter and setter
}
static class Data<T> {
private T newData;
private List<ModProperty> modProps;
private Object others;
//getter and setter
}
public static void main(String[] args) {
test1();
System.out.println("==================================");
test2();
}
public static void test1() {
Gson gson = new Gson();
Header header = new Header("a", "b", "c");
System.out.println(gson.toJson(header));//打印 {"dataType":"a","sendTime":"b","data":"c"}
///////////////////////////////////////////////////
String dataType = "a";
String sendTime = "b";
String data = "c";
String headerJson = "{\"dataType\":\"" + dataType + "\",\"sendTime\":\"" + sendTime + "\",\"data\":\"" + data + "\"}";
header = gson.fromJson(headerJson, Header.class);
System.out.println(header.getDataType() + "," + header.getSendTime() + "," + header.getData());
}
public static void test2() {
Gson gson = new Gson();
Data<String> dataObject = new Data<>();
List<ModProperty> modProperties = new ArrayList<>();
ModProperty modProperty = new ModProperty();
modProperty.setName("哈哈哈");
FieldValue newValue = new FieldValue();
newValue.setvString("范德萨法师分散");
JsonArray jsonArray = new JsonArray();
jsonArray.add(1);
jsonArray.add(3);
jsonArray.add(3);
newValue.setvArray(jsonArray);
modProperty.setNewValue(newValue);
modProperty.setOldValue(newValue);
modProperties.add(modProperty);
dataObject.setModProps(modProperties);
dataObject.setNewData("范德萨发士大夫撒");
dataObject.setOthers("范德萨法师发射我");
System.out.println(gson.toJson(dataObject));
/////////////////////////////////
String dataJson = "{\"newData\":\"范德萨发士大夫撒\",\"modProps\":[{\"name\":\"哈哈哈\",\"oldValue\":{\"vString\":\"范德萨法师分散\",\"vArray\":[1,3,3]},\"newValue\":{\"vString\":\"范德萨法师分散\",\"vArray\":[1,3,3]}}],\"others\":\"范德萨法师发射我\"}";
Data entity = (Data) gson.fromJson(dataJson, Data.class);
System.out.println(entity.getNewData());
System.out.println(entity.getOthers());
System.out.println(((ModProperty) entity.getModProps().get(0)).getName());
}
}