我正在为web服务编写一个Java客户端,需要将响应JSON对象解析为映射
我无法控制JSON格式,而插入到一个相对较旧的现有应用程序中的客户端占用了大量内存,而且实际上还有数百个其他java库依赖项。
因此,我关心的是使我的客户机尽可能不受外部依赖,并且随着时间的推移内存占用最小,以避免大量内存使用和垃圾收集。
我知道我可以用
Gson
或Jackson
来实现这一点,所以我正在寻找考虑到这些运行时限制的最佳方法(我从未使用过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": "****"
}
}
谢谢大家的意见!
感谢您的有益回复。仅供参考,我和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