我正在使用 Java streams 解析从 REST 服务调用接收到的一些 JSON JsonParser.getObjectStream(),并过滤特定值,但从未得到我期望的匹配项。深入挖掘,我发现返回的字符串值在开头和结尾包含额外的双引号。
这里有一些代码来说明。首先,我展示了获取值的“直接”方法,然后是流方法。
package com.company.jsonptest;
import java.io.StringReader;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.stream.JsonParser;
public class GetStringTest {
public static void main(String[] args) {
System.out.println("Direct...");
JsonParser parser = Json.createParser(new StringReader(json));
parser.next();
JsonObject jsonObject = parser.getObject().asJsonObject();
String username = jsonObject.getString("firstname");
String name = jsonObject.getString("lastname");
System.out.println("firstname: " + username);
System.out.println("lastname: " + name);
System.out.println("Streams...");
JsonParser parser2 = Json.createParser(new StringReader(json));
parser2.next();
parser2.getObjectStream().forEach(entry -> {
String key = entry.getKey();
String value = entry.getValue().toString();
String type = entry.getValue().getValueType().toString();
System.out.println(key + ": " + value + " (" + type + ")");
});
}
private static String json = "{\n"
+ " \"firstname\": \"John\",\n"
+ " \"lastname\": \"Smith\"\n"
+ "}";
}
这是输出。注意额外的引号。我将 JsonValue 类型作为额外检查包括在内。
Direct...
firstname: John
lastname: Smith
Streams...
firstname: "John" (STRING)
lastname: "Smith" (STRING)
有没有办法解决这个问题,除了增加一个额外的步骤来去掉引号?
料青山看我应如是
相关分类