我有一个json文件。
{
"data" : [
"my/path/old",
"my/path/new"
]
}
我需要将int转换为String的ArrayList。如何使用Jackson库进行操作?
UPD:
我的代码:
Gson gson = new Gson();
JsonReader reader = new JsonReader(new InputStreamReader(FileReader.class.getResourceAsStream(file)));
List<String> list = (ArrayList) gson.fromJson(reader, ArrayList.class);
for (String s : list) {
System.out.println(s);
}
我的例外:
Exception in thread "main" com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected value at line 1 column 1
我的新更新
UPD2:
Gson gson = new Gson();
Type list = new TypeToken<List<String>>(){}.getType();
JsonReader reader = new JsonReader(new InputStreamReader(FileReader.class.getResourceAsStream(file)));
List<String> s = gson.fromJson(reader, list);
System.out.println(s);
最佳答案
您已经标记了Jackson,但在示例中使用的是Gson。我要和杰克逊一起去
String json = "{\"data\":[\"my/path/old\",\"my/path/new\"]}"; // or wherever you're getting it from
创建您的
ObjectMapper
ObjectMapper mapper = new ObjectMapper();
读取JSON字符串作为树。由于我们知道它是一个对象,因此可以将
JsonNode
强制转换为ObjectNode
。ObjectNode node = (ObjectNode)mapper.readTree(json);
获取名为
JsonNode
的data
JsonNode arrayNode = node.get("data");
将其解析为
ArrayList<String>
ArrayList<String> data = mapper.readValue(arrayNode.traverse(), new TypeReference<ArrayList<String>>(){});
列印
System.out.println(data);
给
[my/path/old, my/path/new]
关于java - 如何将JSON解析为字符串列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22873521/