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

Map中的Json对象,如何在java中获得它?

  •  0
  • Malin  · 技术社区  · 6 年前

    我想知道如何在Java中再次获得这种配置?

    Map<String, Object> sesScope = ExtLibUtil.getSessionScope();
    if (null != sesScope.get("configJSON")){
        JsonJavaObject jsonObject = new JsonJavaObject();
        jsonObject = (JsonJavaObject) sesScope.get("configJSON");
        System.out.println("got object?");
        System.out.println("json " + jsonObject.toString());
    }   
    

    在控制台里,我从来没有得到“得到对象?”打印对账单。我做错什么了?

    3 回复  |  直到 6 年前
        1
  •  1
  •   Stanislaw Guzik    6 年前

    JavaScript方法 JSON.parse 返回的只是一个简单的JavaScript对象,而不是 JsonJavaObject . 如果没有额外的不必要的开销,以后就不能在Java中使用JavaScript对象。不要使用 json2.jss ,使用 JsonParser 喜欢 保罗威瑟斯

    更改从Notes字段获取JSON的代码:

    #{javascript:
        importPackage(com.ibm.commons.util.io.json);
        var jsonText = doc.getItemValueString(itemname);
        var jsonFactory:JsonFactory = JsonJavaFactory.instanceEx;
        var jsonObject = JsonParser.fromJson(jsonFactory, jsonText);
        sessionScope.put('configJSON', jsonObject);
    }
    

    Map<String, Object> sesScope = ExtLibUtil.getSessionScope();
    if (null != sesScope.get("configJSON")) {
        JsonJavaObject jsonObject = (JsonJavaObject) sesScope.get("configJSON");
        System.out.println("got object?");
        System.out.println("json " + jsonObject.toString());
    }
    

    你现在应该没事了。 JsonJavaFactory.instance 而不是 JsonJavaFactory.instanceEx ,你会得到 java.util.HashMap 而不是 JsonJavaObject

        2
  •  1
  •   Paul Stephen Withers    6 年前

    sesScope.containsKey("configJSON") 验证。如果它是空的JSON对象,那么它将是“{}”而不是null。如果您从REST服务或Notes文档加载JSON,那么它可能是一个字符串,而不是JsonJavaObject。对于解析JSON字符串,可以使用 com.ibm.commons.util.io.json.JsonParser

        3
  •  -1
  •   Vijendra Singh    6 年前

    JsonJavaObject是您的POJO java类吗? 如果是,请使用Fasterxml的ObjectMapper将JSON数据映射到JsonJavaObject的字段类。使用此方法用于将json数据映射到任何POJO类

    public final T validateJson(final Map<String, Object> jsonMap, final T temmplateClass) throws Exception {
            ObjectMapper objectMapper = new ObjectMapper();
            try {
                // convert JSON string to Map
                String jsonString = objectMapper.writeValueAsString(jsonMap);
                return objectMapper.readValue(jsonString, (Class<T>) temmplateClass);
            } catch (JsonMappingException e) {
                throw new NestableRuntimeException(String.format(ApiCommonConstants.INVALID_JSON_FIELD,
                        e.getPath().get(e.getPath().size() - 1).getFieldName()));
            } catch (IOException e) {
                throw new NestableRuntimeException(e.getMessage(), e);
            }
        }