Java GSON使用成员ArrayList反序列化对象<;字符串>;

Java GSON使用成员ArrayList反序列化对象<;字符串>;,java,json,list,gson,deserialization,Java,Json,List,Gson,Deserialization,我见过很多类似的问题。我还没有找到任何适合我的问题。在我发现的所有示例中,列表都是父类中定义的对象类型,而我只有一个字符串列表。我尝试过使用一个简单的数组字符串[],我看到过重载反序列化器和获取TypeToken的示例,但我无法将其绑定在一起来实现这一点。我的列表总是空的(如果我在定义列表时没有初始化它,则为空)。我在这里遗漏了什么,感觉就像我在尝试做一些非常简单的事情,但我在上面发现的一切看起来都太复杂了 这是我的班级: public class MondoConfig { private S

我见过很多类似的问题。我还没有找到任何适合我的问题。在我发现的所有示例中,列表都是父类中定义的对象类型,而我只有一个字符串列表。我尝试过使用一个简单的数组字符串[],我看到过重载反序列化器和获取TypeToken的示例,但我无法将其绑定在一起来实现这一点。我的列表总是空的(如果我在定义列表时没有初始化它,则为空)。我在这里遗漏了什么,感觉就像我在尝试做一些非常简单的事情,但我在上面发现的一切看起来都太复杂了

这是我的班级:

public class MondoConfig {
private String merchantURL;
public ArrayList<String> targets = new ArrayList<String>();


public MondoConfig () {}

public String getMerchantURL() {
    return this.merchantURL;
}

public void setMerchantURL(String url) {
    this.merchantURL = url;
}

public ArrayList<String> getTargets() {
    return this.targets;
}

public void setTargets(ArrayList<String> t) {
    this.targets = t;


}
}
以及我要反序列化的代码:

BufferedReader br = new BufferedReader(new FileReader("C:\\mondo_config.json"));
MondoConfig config = gson.fromJson(br, MondoConfig.class);

我在你的代码中看到了一些问题,但我能够让它正常工作,没有任何问题

package org.nuttz.gsonTest;
import java.util.ArrayList;

public class MondoConfig {
   private String merchantURL;
   public ArrayList<String> targets = new ArrayList<String>();

   MondoConfig () {}

   public String getMerchantURL() {
      return this.merchantURL;
   }

   public void setMerchantURL(String url) {
      this.merchantURL = url;
   }

   public ArrayList<String> getTargets() {
      return this.targets;
   }

   public void setTargets(ArrayList<String> t) {
      this.targets = t;
   }
}

这是使用GSON的2.8.2版本。换句话说,您走对了方向,只需修复MondoConfig类。

当我复制粘贴到stackoverflow时,setMerchantURL的这个问题就是一个问题。所以现在我更加困惑为什么我的代码不工作如果你直接复制我的代码,它能工作吗?你真的在打开你认为是的文件吗?我没有完全复制粘贴你的代码。今晚到家后我会试试的。我知道我打开的文件是正确的,因为类的其他成员被正确填充了。哦,该死的。我将json文件保存在计算机上的另一个位置,然后将其复制/粘贴到c:/location。那是在我添加目标阵列之前。我在原始位置编辑文件,这就是为什么所有其他数据都是正确的。感谢您的帮助,特别是询问“it是否已插电?”支持问题的本质。
package org.nuttz.gsonTest;
import java.util.ArrayList;

public class MondoConfig {
   private String merchantURL;
   public ArrayList<String> targets = new ArrayList<String>();

   MondoConfig () {}

   public String getMerchantURL() {
      return this.merchantURL;
   }

   public void setMerchantURL(String url) {
      this.merchantURL = url;
   }

   public ArrayList<String> getTargets() {
      return this.targets;
   }

   public void setTargets(ArrayList<String> t) {
      this.targets = t;
   }
}
package org.nuttz.gsonTest;

import java.io.*;
import java.util.List;
import com.google.gson.*;

public class App 
{
    public static void main( String[] args )
    {
       Gson gson = new Gson();
       try {
          BufferedReader br = new BufferedReader(new FileReader("/home/jim/mondoconfig.json"));
          MondoConfig config = gson.fromJson(br, MondoConfig.class);
          System.out.println("Contents of config:");
          System.out.println(config.getMerchantURL());
          List<String> targets = config.targets;
          for (String t : targets) {
             System.out.println(t);
          }
       }
       catch (Exception x) {
          x.printStackTrace();
       }
    }
}
Contents of config:
https://example.com/collections/posters
testing
another
one more