代码之家  ›  专栏  ›  技术社区  ›  Chris Dutrow

jsonValue有问题

  •  0
  • Chris Dutrow  · 技术社区  · 15 年前

    我真的错过了什么吗?为什么我不能把我放进去的东西拿出来?

    Set<String> stringSet = new LinkedHashSet<String>();
    stringSet.add("firstName");
    Map<String,Object> payload = new LinkedHashMap<String,Object>();
    payload.put("properties", stringSet);
    
    String sPayload = JSONValue.toJSONString(payload);
    payload = (Map<String, Object>) JSONValue.parse(sPayload); // <-- payload == NULL
    
    1 回复  |  直到 15 年前
        1
  •  2
  •   ZoogieZork    15 年前

    这是一个 json-simple bug(从1.1版开始)--它不知道如何转换 Set 进入一个JSON数组,所以它最终只调用 toString() 并逐字插入结果。

    因此,您的JSON如下所示:

    {"properties":[firstName]}
    

    什么原因 JSONValue.parse() 扼杀未引用的 firstName .

    如果使用 List 它工作正常:

    {"properties":["firstName"]}
    

    这个问题有一个悬而未决的问题: http://code.google.com/p/json-simple/issues/detail?id=23