使用杰克逊从 json 中删除空格
Remove whitespace from json using jackson
我有一个简单的 JSON 像这样:
{
"enums" : [{"someName" : " someValue ", etc.. }]
}
有时,someValue 中有空格。 (即“ someValue ”)
我似乎不知道如何将每个值设置回节点。我有这个:
JsonNode values = root.get("enumValues");
Iterator<Entry<String, JsonNode>> nodes = values.getFields();
while (nodes.hasNext()) {
Map.Entry<String, JsonNode> entry = (Map.Entry<String, JsonNode>) nodes.next();
// what do I do here?
}
我知道 JsonNodes 是不可变的,但我如何获得 JsonObjects? 无效。
我希望能够将其解析为一个对象(我最终想递归地进行更复杂的 JSON,但一次做一件事)这样当我
打印 JSON 看起来像这样:
{
"enums" : [{"someName" : "someValue", etc.. }]
}
给定一个 JSON 例子
{
"enums" : [{"someName" : " someValue ", "a": " b "}]
}
你可以这样做:
(我还添加了一些代码来读取 JSON 输入并打印 JSON 输出,
并修复了代码中的一些缺陷以使其可编译)
ObjectMapper objectMapper = new ObjectMapper();
File file = new File("example.json");
JsonNode root = objectMapper.readValue(file, JsonNode.class);
ArrayNode arrayNode = (ArrayNode) root.get("enums");
ObjectNode objectNode = (ObjectNode) arrayNode.get(0);
Iterator<Map.Entry<String, JsonNode>> nodes = objectNode.fields();
while (nodes.hasNext()) {
Map.Entry<String, JsonNode> entry = nodes.next();
if (entry.getValue().isTextual()) {
String s = entry.getValue().asText(); // get string from JSON node
s = s.trim(); // remove leading/trailing space
objectNode.put(entry.getKey(), s); // put the string back into JSON node
}
}
objectMapper.writeValue(System.out, root);
然后你得到 JSON 输出
{"enums":[{"someName":"someValue","a":"b"}]}
我有一个简单的 JSON 像这样:
{
"enums" : [{"someName" : " someValue ", etc.. }]
}
有时,someValue 中有空格。 (即“ someValue ”)
我似乎不知道如何将每个值设置回节点。我有这个:
JsonNode values = root.get("enumValues");
Iterator<Entry<String, JsonNode>> nodes = values.getFields();
while (nodes.hasNext()) {
Map.Entry<String, JsonNode> entry = (Map.Entry<String, JsonNode>) nodes.next();
// what do I do here?
}
我知道 JsonNodes 是不可变的,但我如何获得 JsonObjects?
我希望能够将其解析为一个对象(我最终想递归地进行更复杂的 JSON,但一次做一件事)这样当我 打印 JSON 看起来像这样:
{
"enums" : [{"someName" : "someValue", etc.. }]
}
给定一个 JSON 例子
{
"enums" : [{"someName" : " someValue ", "a": " b "}]
}
你可以这样做:
(我还添加了一些代码来读取 JSON 输入并打印 JSON 输出,
并修复了代码中的一些缺陷以使其可编译)
ObjectMapper objectMapper = new ObjectMapper();
File file = new File("example.json");
JsonNode root = objectMapper.readValue(file, JsonNode.class);
ArrayNode arrayNode = (ArrayNode) root.get("enums");
ObjectNode objectNode = (ObjectNode) arrayNode.get(0);
Iterator<Map.Entry<String, JsonNode>> nodes = objectNode.fields();
while (nodes.hasNext()) {
Map.Entry<String, JsonNode> entry = nodes.next();
if (entry.getValue().isTextual()) {
String s = entry.getValue().asText(); // get string from JSON node
s = s.trim(); // remove leading/trailing space
objectNode.put(entry.getKey(), s); // put the string back into JSON node
}
}
objectMapper.writeValue(System.out, root);
然后你得到 JSON 输出
{"enums":[{"someName":"someValue","a":"b"}]}