当前位置: 首页 > 知识库问答 >
问题:

需要最简单的方法来解析Java中的JSon内容

江德润
2023-03-14

我正在为web服务编写一个Java客户端,需要将响应JSON对象解析为映射

我无法控制JSON格式,而插入到一个相对较旧的现有应用程序中的客户端占用了大量内存,而且实际上还有数百个其他java库依赖项。

因此,我关心的是使我的客户机尽可能不受外部依赖,并且随着时间的推移内存占用最小,以避免大量内存使用和垃圾收集。

我知道我可以用GsonJackson来实现这一点,所以我正在寻找考虑到这些运行时限制的最佳方法(我从未使用过JSON。简单,快速阅读时我没有看到如何处理复杂类型)。

JSON看起来像这样。我只需要关注属性部分名称/值对。其余的我可以忽略。

{
    "responseInfo": {
        "responseMsg": "Success",
        "timeStamp": "***",
        "transactionId": "***"
    },
    "callerId":  "****", 
    "locale": "en-US",
    "userId": "***",
    "attributes":[
    {
        "attributeName": "AN",
        "attributeDescription": "Account Number",
        "attributeValue": "*****"
    },
    {
        "attributeName": "EA",
        "attributeDescription": "Email Address",
        "attributeValue": "****@****"
    },
    {
        "attributeName": "SOI",
        "attributeDescription": "someotherinfo",
        "attributeValue": "****"
    }
}

谢谢大家的意见!


共有1个答案

吕高寒
2023-03-14

感谢您的有益回复。仅供参考,我和Jackson一起实现了一个通用解析器来查找JSON块中的名称/值对。我对所需的灵活性和短代码量感到满意。作为参考,这是我写的代码:

   final ObjectMapper mapper = new ObjectMapper();
   final ArrayType type = mapper.getTypeFactory().constructArrayType(Map.class);

   try {
       if (attrBlockName == null || attrBlockName.length() == 0)
           return mapper.readValue(f, type);
       JsonNode base = new ObjectMapper().readTree(f);
       if (base == null)
           return JSonHttpClientAttributeProvider.PROVIDER_FAILED_UNKNOWN;
       JsonNode attrJson = base.get(attrBlockName);
       if (attrJson == null)
           return JSonHttpClientAttributeProvider.PROVIDER_FAILED_UNKNOWN;
       Map<String, String>[] mapArray = mapper.readValue(mapper.treeAsTokens(attrJson), type);
       for (Map<String, String> newmap : mapArray) {
           if (newmap.containsKey(attrNameField) && newmap.containsKey(attrValueField))
               map.put(newmap.get(attrNameField), newmap.get(attrValueField));
       }
       return PROVIDER_SUCCEEDED;
   } catch (IOException ioe) {
       throw new MyExceptionClass("Exception occurred during request", ioe);
   }
 类似资料:
  • 问题内容: 我需要通过Qt解析JSON对象。最简单/最快的方法是什么? 问题答案: 试试QJson。 QJson是积极开发的(如果没有记错的话,将由KDE使用)。最好的办法是直接签出源代码并自己构建。没有对QJson的依赖(Qt和CMake除外)。使用起来也很简单,请看一些用法示例: http://qjson.sourceforge.net/usage/

  • 我的问题是:在PHP中,解析SRU请求返回的XML的最简单方法是什么? 例如,在浏览器中查看以下URL: http://explor.bcu.ac.uk/IntraLibrary-SRU?operation=searchRetrieve 此对公共存储库的查询返回符合SRU标准的格式良好的XML文档(它进行验证),在本例中返回两条记录。我使用过各种排列的simplexml\u load\u stri

  • 问题内容: 我正在尝试弄清楚如何解析一些XML(对于Android应用程序),在Java中很难做到这一点似乎很荒谬。似乎需要创建一个具有各种回调(startElement,endElement等)的XML处理程序,然后您必须注意将所有这些数据更改为对象。类似于本教程。 我真正需要的只是将XML文档更改为多维数组,甚至更好的是拥有某种Hpricot处理器。有没有办法做到这一点,还是真的必须在上面的示

  • 问题内容: 这可能是一个愚蠢的问题,但什么是阅读和分析的最简单方法JSON从URL中的Java? 在Groovy中,只需几行代码即可。我发现Java示例太长了(并且具有巨大的异常处理块)。 问题答案: 使用Maven工件,我得到了以下代码,我认为这很短。尽可能短,但仍然可用。

  • 本文向大家介绍Java中Json解析的方法分析,包括了Java中Json解析的方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java中Json解析的方法。分享给大家供大家参考,具体如下: 首先准备一个JSON格式的字符串 下面是一个Json解析的程序代码 PS:关于json操作,这里再为大家推荐几款比较实用的json在线工具供大家参考使用: 在线JSON代码检验、检验、美化、格式

  • 我正在尝试将xml解析为java对象,我已经阅读并实现了以下教程: http://www.vogella.com/articles/JAXB/article.html(效果很好) 但是当我创建自己的类时(类似于教程中的类) 我得到:异常在线程"main"com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsExcema: 1计数的Illega