代码之家  ›  专栏  ›  技术社区  ›  chris01

Java JSON:获取不带引号的对象值?

  •  1
  • chris01  · 技术社区  · 6 年前

    我解析一个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?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Mạnh Quyết Nguyễn    6 年前

    你知道你的输入值是字符串,所以你可以这样做:

    for (Map.Entry <String, JsonValue> e : bar.entrySet ()) {
        System.out.println (e.getKey() + ": " + ((JsonString)e.getValue ()).getString()); 
    }