如何使用gson将此json String转换为普通的java arraylist

时间:2016-09-23 09:23:23

标签: java json

我尝试将以下JSON字符串转换为Array并出现以下错误:

  

线程“AWT-EventQueue-0”中的异常java.lang.NoClassDefFoundError:   org / apache / commons / logging / LogFactory at   net.sf.json.AbstractJSON。(AbstractJSON.java:54)at   net.sf.json.util.CycleDetectionStrategy。(CycleDetect ionStrategy.java:36)   在net.sf.json.JsonConfig。(JsonConfig.java:65)at   net.sf.json.JSONSerializer.toJSON(JSONSerializer.java:84)

JSON:

std::set<int> my_set;
for (auto item : my_set)
    std::cout << item << endl;

代码:

[  
   {  
      "file_name":"1.xml",
      "file_ext":"application/octet-stream",
      "sr_no":"0.1",
      "status":"Checked ",
      "rev":"1",
      "locking":"0"
   },
   {  
      "file_name":"2.xml",
      "file_ext":"json/octet-stream",
      "sr_no":"0.2",
      "status":"Not Checked ",
      "rev":"2",
      "locking":"1"
   },
   {  
      "file_name":"3.xml",
      "file_ext":"application/json-stream",
      "sr_no":"0.3",
      "status":"Checked ",
      "rev":"1",
      "locking":"3"
   },
   {  
      "file_name":"4.xml",
      "file_ext":"application/octet-stream",
      "sr_no":"0.4",
      "status":"Checked ",
      "rev":"0.4",
      "locking":"4"
   }
]

3 个答案:

答案 0 :(得分:3)

我知道问题是关于将JSON字符串转换为Java数组,但我还想回答一下如何使用Gson库将JSON字符串转换为ArrayList。

由于我花了很多时间来解决这个问题,我希望我的解决方案可以帮助其他人。

我的JSON字符串看起来与此类似 -

enter image description here

我有一个名为StockHistory的对象,我希望将此JSON转换为StockHistory的ArrayList。

这是我的StockHistory课程的样子 -

class StockHistory {    
 Date date;
 Double open;
 Double high;
 Double low;
 Double close;
 Double adjClose;
 Double volume;
}

我用来将JSON数组转换为StockHistory的ArrayList的代码如下 -

Gson gson = new Gson();
Type listType = new TypeToken< ArrayList<StockHistory> >(){}.getType();
List<StockHistory> history = gson.fromJson(reader, listType);

现在,如果您正在从文件中读取JSON,那么读者的初始化将是 -

Reader reader = new FileReader(fileName);

如果您只是将字符串转换为JSON对象,那么读者的初始化只会是 -

String reader = "{ // json String }";

希望有所帮助。干杯!!!

答案 1 :(得分:0)

首先,我要说你的问题非常糟糕&#34;下次请提高您的问题质量。

<强>答案:

尝试使用com.fasterxml.jackson.databind.ObjectMapper

如果您有一个java类来描述列表中的项目:

final ObjectMapper mapper = new ObjectMapper();
YourClass[] yourClasses = mapper.readValue(YourString, YourClass[].class);

然后将数组转换为List。

如果你没有java类,那就改为使用LinkedHashMap。

答案 2 :(得分:0)

您可以使用字符串类型中的实体创建一个java类:file_name, file_ext, sr_no, status, rev, locking

 public class TestJson {

        private String file_name, file_ext, sr_no, status, rev, locking;

        //get & set
        }
}

然后你打电话:

public static void main(String[] args) {
    String json = your json string;
    TestJson[] respone = new Gson().fromJson(json, TestJson[].class);
    for (TestJson s : respone) {
       System.out.println("File name: " + s.getFile_name());
    }
}


所以,你有一个你想要的对象列表。