java - 如何将具有 arraylist 的 java 类转换为 json

标签 java json arraylist gson

我使用 Gson 库,并且有一个类,该类的成员之一是数组列表。
我向此数组列表添加不同的对象类型,然后将其序列化为 json

public class MethodParameter {
    private String className;
    private String methodName;
    private ArrayList parameters;

    public MethodParameter(){
        parameters = new ArrayList();
    }

    public String getClassName(){
        return className;
    }

    public String getMethodName(){
        return methodName;
    }

    public List<Object> getParameters(){
        return parameters;
    }

    public void setClassName(String value){
        className = value;
    }

    public void setMethodName(String value){
        methodName = value;
    }

    public void setParameters(ArrayList value){
        parameters = value;
    }
}

然后我转换如下:

Gson gson = new Gson();
java.lang.reflect.Type type = new TypeToken<MethodParameter>() {}.getType();
String json = gson.toJson(mp, type);  

但我得到的是:

{"className":"MainClass","methodName":"测试","parameters":[]}

Parameters 是一个数组列表,我向其中添加不同类型的类。如何让它创建正确的 json 结果?

最佳答案

我尝试了你的代码和两件事,

  1. MethodParameter.parameters 定义为列表(只是最佳实践)
  2. 问题可能出在您操作 MethodParameter 对象中的列表的方式...

无论如何,这是一个按您希望的方式工作的代码片段:

示例:

public static void main(String[] args) {
    MethodParameter mp = new MethodParameter();
    mp.setClassName(String.class.getCanonicalName());
    mp.setMethodName("replace");
    List<String> parametersList = new ArrayList<String>();
    parametersList.add("target");
    parametersList.add("sequence");
    mp.setParameters(parametersList);
    //
    Gson gson = new Gson();
    java.lang.reflect.Type type = new TypeToken<MethodParameter>() {
            }.getType();
    String json = gson.toJson(mp, type);
    System.out.println(json);
    }

但在我看来,你可以通过这样做来生成 json:

System.out.println(gson.toJson(mp, MethodParameter.class));

关于java - 如何将具有 arraylist 的 java 类转换为 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36959998/

相关文章:

java - 如何从HQL中的 '!'符号转义

php - 如何使用 PHP 的 Web 服务将 sqlite 本地数据库传输到 MySQL 数据库

json - M语言多次json查询总结果

java - 消费者和 worker 模式

java - 使用 java 8 集合和流解析 JSON 对象的多个字段并添加到列表中

java - 解析java字符串中的 anchor 标记

java - 如何解决执行com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable时发生失败

java - maven 使用 --add-exports 运行和构建

java - 在 Spring JMS 监听器中获取用户名

java - 使用gson库将Json反序列化为java类