Java JSON:获取不带引号的对象值?
Java JSON: get object-value without quotes?
我解析了一个 JSON 字符串。
如何在没有引号的情况下获取对象的值?我用列表得到它,但它不适用于对象。
import javax.json.*;
import javax.json.stream.*;
...
String s="{ \"foo\" : [ \"abc\", \"def\" ], \"bar\" : { \"k1\" : \"v1\", \"k2\" : \"v2\" } }";
JsonReader jr = Json.createReader(new StringReader (s));
JsonObject jo = jr.readObject();
JsonArray foo = jo.getJsonArray ("foo");
for (int i = 0; i < foo.size (); i ++)
{
System.out.println (i + ": " + foo.getString (i)); // ok, no quotes
}
JsonObject bar = jo.getJsonObject ("bar");
for (Map.Entry <String, JsonValue> e : bar.entrySet ())
{
System.out.println (e.getKey() + ": " + e.getValue ().toString());
}
这就是输出。
0: abc
1: def
k1: "v1"
k2: "v2"
如何从解析器中获取不带引号的 v1 和 v2?
你知道你的输入值是字符串,所以你可以这样做:
for (Map.Entry <String, JsonValue> e : bar.entrySet ()) {
System.out.println (e.getKey() + ": " + ((JsonString)e.getValue ()).getString());
}
我解析了一个 JSON 字符串。 如何在没有引号的情况下获取对象的值?我用列表得到它,但它不适用于对象。
import javax.json.*;
import javax.json.stream.*;
...
String s="{ \"foo\" : [ \"abc\", \"def\" ], \"bar\" : { \"k1\" : \"v1\", \"k2\" : \"v2\" } }";
JsonReader jr = Json.createReader(new StringReader (s));
JsonObject jo = jr.readObject();
JsonArray foo = jo.getJsonArray ("foo");
for (int i = 0; i < foo.size (); i ++)
{
System.out.println (i + ": " + foo.getString (i)); // ok, no quotes
}
JsonObject bar = jo.getJsonObject ("bar");
for (Map.Entry <String, JsonValue> e : bar.entrySet ())
{
System.out.println (e.getKey() + ": " + e.getValue ().toString());
}
这就是输出。
0: abc
1: def
k1: "v1"
k2: "v2"
如何从解析器中获取不带引号的 v1 和 v2?
你知道你的输入值是字符串,所以你可以这样做:
for (Map.Entry <String, JsonValue> e : bar.entrySet ()) {
System.out.println (e.getKey() + ": " + ((JsonString)e.getValue ()).getString());
}