我有一个输入JSON节点,如下所示
"headers" : {
"name1" : "value1",
"name2" : "value2"
}
我的Java类如下所示:
public class OptionalHeader{
private String name;
private String value;
public OptionalHeader() {
super();
}
public OptionalHeader(String name, String value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
我想从JsonNode创建一个类似下面的OptionalHeader的arrayList。
List<OptionalHeader> optionalHeaders = new ArrayList<OptionalHeader>();
任何帮助将不胜感激。谢谢:))
答案 0 :(得分:1)
感谢所有回复:)
我要求通过包含key->value
对的REST请求的JsonNode转换为ArrayList<OptionalHeader>
,请参阅相关的OptionalHeader
类。
最后使用以下内容完成:
来自REST请求的(将其作为我的POJO中的JsonNode)。我在我的二传手中使用了以下内容。
public void setOptHeaders(JsonNode optHeaders) throws JsonParseException, JsonMappingException, IOException {
this.optHeaders = optHeaders;
List<OptionalHeader> allHeaders = new ArrayList<OptionalHeader>();
Iterator<Entry<String, JsonNode>> nodeIterator = optHeaders.fields();
while (nodeIterator.hasNext()) {
Map.Entry<String, JsonNode> entry = (Map.Entry<String, JsonNode>) nodeIterator.next();
OptionalHeader header = new OptionalHeader(entry.getKey(),entry.getValue().asText());
allHeaders.add(header);
}
optionalEmailHeaders.addAll(allHeaders);
}
然后在getter中将其转换回来。
public JsonNode getOptHeaders() {
final ObjectMapper mapper = new ObjectMapper();
final Map<String, String> map = new HashMap<String, String>();
for (final OptionalHeader data: optionalEmailHeaders)
map.put(data.getName(), data.getValue());
optHeaders = mapper.valueToTree(map);
return optHeaders;
}
答案 1 :(得分:0)
杰克逊映射器可以将Java对象映射到JSON对象。
您可以从here获取Jackson API。
尝试将您的JSON字符串保存到文件中,例如。 'headers.json'。
Jackson提供了一个ObjectMapper
类,您可以使用其readValue( File file, Class class)
方法从JSON获取Java对象,如: -
ObjectMapper mapper = new ObjectMapper();
OptionalHeader optHeader= mapper.readValue(new File("c:\\headers.json"), OptionalHeader .class);
您可以使用相同的链接获取文档和文档。阅读更多相关信息。