根据java实体拼接可被gson解析的json字符串 10C

根据以下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;

  • 说明:
  • a.字符串必须满足以上实体
  • b.字符串使用谷歌gson能够准确的解析出来
  • c.newData中数据格式是{"name":"张三","tel":"12345678"...}

3个回答

我建议你先把实体用Gson转成json串,然后反向推出拼接字符串

onlymorgan
onlymorgan 可以帮我写一下不?写出对应可以解析的字符串。
大约一年之前 回复

通过重写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());
    }
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!

相似问题

5
新手 java json NullPointerException异常
1
根据郭神的第一行代码(第二版)9.4.2的利用GSON解析JSON出错
2
按照第一行代码上打酷欧天气提示我 Value Request of type java.lang.String cannot be converte
6
Android 怎样将一组json数据的key value对应的放入到listview中显示两列?
1
SDK打包成aar时,如何自动加载所依赖的jar包
2
c++解析json是否可以像JAVA一样封装成通用的方法
1
com.google.gson.stream.MalformedJsonException: Unterminated object at line 1 column 232?
4
gson字符串转化为集合时报错,抛空指针异常,找不到原因
0
求大神!! SpringbootAdmin2.1.4 解析gson类型的json出错
1
EasyPoi导入excel,获取到的是null
4
安卓将json数据转换成对象,可是对象属性值为空,是为什么?
2
求大佬帮助!java后端怎么构造这种json?
1
Failed to retrieve data from /webhdfs/v1/?op=LISTSTATUS: Server Error,同时无法put文件到hdfs
1
gson解析Java对象中包含对象集合不执行问题
5
从服务器接收的json数据,gson解析生成bean对象,怎么让页面显示出来
1
java中,谷歌的Gson类在解析yyyy/MM/dd格式的日期时遇到的问题
5
APP传递json格式的参数到后台,接收为null,怎么解决?是什么原因?
1
正在学习android的第一行代码的coolweather遇到了点问题
3
android开发,在后台里面有数据,但Adapter没有接收到数据,找不到原因,帮忙看一下!!!
2
spring boot 运行出错了 Application failed to start with classpath?