我尝试将以下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"
}
]
答案 0 :(得分:3)
我知道问题是关于将JSON字符串转换为Java数组,但我还想回答一下如何使用Gson库将JSON字符串转换为ArrayList。
由于我花了很多时间来解决这个问题,我希望我的解决方案可以帮助其他人。
我的JSON字符串看起来与此类似 -
我有一个名为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());
}
}
所以,你有一个你想要的对象列表。