Java中将json映射到class

前言

最近由于工作中项目的需要,需要在java端将json映射到class,现将整个过程总结一下。

json数据结构

[
  { "GoMethodName":"BasicTypeBool","GoInputParam":{"BasicType":{"boolParam":true}},"JavaReturnData":{"BasicType":{"boolParam":false}},
    "JavaMethodName":"testbool","JavaTypes":"boolean","ElemKey":"boolParam","JavaMapKey":"testbool","PtrFlag":false}
]

java端class的定义

由于json的层级分为了好几级,所以需要定义不同的class文件,具体实现的代码如下:

DataParam.java

package entity;
public class DataParam {
    String GoMethodName;
    GoInputParam GoInputParam;
    JavaReturnData JavaReturnData;
    String JavaMethodName;
    String JavaTypes;
    String ElemKey;
    String JavaMapKey;   //需要将list转换成map所用到的key,跟每条数据关联
    boolean PtrFlag;
}

GoInputParam.java

package entity;
public class GoInputParam {
    BasicType  BasicType;
}

JavaReturnData.java

package entity;

public class JavaReturnData {
    BasicType  BasicType;
}

package entity;
public class BasicType {

    boolean boolParam ;

    byte byteParam ;

    byte uint8Param;

    char charParam;

    short shortParam;
    
    int intParam ;

    long longParam;
    
    long long2Param;
    
    float floatParam;

    double doubleParam;

    String stringParam;
}

实现映射的具体逻辑

 //将json文件中的数据映射到DataParam实体类中
    import com.alibaba.fastjson.JSON;

    public static List getListDataFromJson(String jsonPath) {
        List ddps = new ArrayList();
        ddps = JSON.parseArray(readToString(jsonPath), DataParam.class);

        return ddps;
    }

 //将DataParam的list数据处理成map
    public static Map reverseListToMap(String jsonPath) {
        Map jsonToMapDatas = new HashMap();
       // for (int i = 0; i < 1; i++) {
            List res = getListDataFromJson(jsonPath);
            for (int j = 0; j < res.size(); j++) {
                String mapKey = res.get(j).getJavaMapKey();
                jsonToMapDatas.put(mapKey, res.get(j));
            }
       // }
        return jsonToMapDatas;
    }

你可能感兴趣的:(Java中将json映射到class)