public static void putAllIdToMap(String json, String name, String id) { String value = ""; String key = ""; Map<String, Object> map = (Map<String, Object>)JsonUtils.jsonToMap(json); for (Entry<String, Object> key1 : map.entrySet()) { JsonParser parser = new JsonParser(); JsonElement jsonElement = parser.parse(JsonUtils.object2Json(key1.getValue())); if (jsonElement.isJsonObject()) { JsonObject jsonObject = jsonElement.getAsJsonObject(); String jsonstr = jsonObject.toString(); putAllIdToMap(jsonstr, name, id); } else if (jsonElement.isJsonArray()) { List<Map<String, Object>> liatMap = (List<Map<String, Object>>)key1.getValue(); for (Map<String, Object> map2 : liatMap) { String jsonstr = JsonUtils.object2Json(map2); putAllIdToMap(jsonstr, name, id); } } else { if (key1.getKey().equals(name)) { if (!"".equals(key1.getValue()) && null != key1.getValue()) { key = key1.getValue().toString(); } } if (key1.getKey().equals(id)) { if (!"".equals(key1.getValue()) && null != key1.getValue()) { value = key1.getValue().toString(); } } if (StringUtils.isNotEmpty(key) && StringUtils.isNotEmpty(value)) { idMap.put(key, value); break; } } } }
注:根据name和ID,找出以name为key id的值为value的键值对,由于获取到的json可能是空、Object、JsonArray等,所以先判断,在使用递归解决多层嵌套问题。
相关推荐
【NewtonJson】是基于.NET平台的一个强大的JSON处理库,由James Newton-King 开发,它在.NET开发领域中被广泛使用。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于...
- **忽略未知字段**:如果JSON字符串包含对象中不存在的字段,可以设置`GsonBuilder`的`excludeFieldsWithoutExposeAnnotation()`方法来忽略这些字段。 - **日期处理**:默认情况下,Gson不处理日期。可以使用`...
这在处理未知结构的JSON时特别有用。 4. **强类型转换**:使用`JsonConverter`接口,可以自定义特定类型到JSON的转换规则,满足特殊需求。 5. **LINQ to JSON**:提供了一套完整的LINQ API,可以直接在JSON对象上...
qDebug() 未知类型:" ; } } } // 解析JSON数组 void parseJsonArray(const QJsonArray &arr) { for (auto val : arr) { if (val.isString()) { qDebug() (); } else if (val.isBool()) { qDebug() (); } ...
8. **复杂类型的处理**: 对于嵌套的对象或数组,Gson可以自动递归解析,无需额外的代码。 9. **注解支持**: Gson支持使用Java注解来控制序列化和反序列化的行为,比如`@SerializedName`用于指定JSON字段名与Java...
使用反射,我们可以动态地创建和设置类的属性,这在处理未知类型的JSON时特别有用。例如,我们可以通过解析JSON中的键来获取类的字段,然后使用`Class.getDeclaredField()`找到对应的字段,再用`field.setAccessible...
**Newtonsoft.Json:C#中的JSON处理库** 在.NET开发中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,广泛应用于网络服务、数据存储以及应用程序内部的数据传输。`Newtonsoft.Json`是由James ...
Newtonsoft.Json是由James Newton-King开发的一个开源项目,它提供了一个高性能且功能丰富的Json处理API。Newtonsoft.Json.dll是这个库的核心组件,包含了所有相关的类型和方法,使得C#对象可以轻松地转换为Json字符...
这在处理JSON时非常有用,因为JSON的结构可能是未知的或变化的。 在`JsonFuncs2.pas`文件中,可能包含了如下函数: - `JsonToDataSet`: 将JSON字符串转换为TClientDataSet。 - `DataSetToJson`: 将TClientDataSet...
杰克逊(Jackson)是Java领域中广泛使用的JSON处理库,它提供了强大的功能,使得JSON与其他数据类型(如Java对象)之间的转换变得简单且高效。本文将深入探讨Jackson框架在JSON转换中的各种方法,帮助你更好地理解和...
通过递归调用`fromJson()`和`toJson()`,可以轻松地处理复杂的JSON数据。 7. **流式API**: - Gson提供了流式API,允许开发者以非阻塞的方式处理大型JSON数据,这对于处理大文件或者网络流特别有用。 8. **类型...
这个实例中,我们看到一个关于错误处理的部分:“ERROR 未知类型,还未解析”。当遇到非数组和非对象的类型时,程序会输出错误信息并调用Yii框架的`Yii::app()->end()`来终止执行。在实际应用中,应根据需求进行适当...
当你从服务器获取到JSON数据时,通常需要将其转换为Java对象以便进一步处理。Java中常用的库如Gson、Jackson、org.json等提供了解析功能。以Jackson为例,可以使用`ObjectMapper`类的`readValue()`方法实现: ```...
这个`traverseJson`函数会深入到JSON对象的每一层,处理所有键值对,无论是基本类型还是嵌套的对象。 在处理JSON数据时,有时还需要借助一些在线工具来帮助我们。比如,`JSON代码检验、检验、美化、格式化工具`可以...
对于嵌套的对象,Json.NET会递归地进行反序列化,生成对应的嵌套C#对象。 除此之外,Json.NET还提供了其他高级功能,如忽略空值、忽略未知属性、自定义转换器等。在处理大数据或性能敏感的场景时,还可以使用`...
递归类型是指类型定义中包含了自身的一种情况,这在处理树状数据结构或者自引用结构时非常有用。`nobject`库的一个独特之处在于,它不仅支持动态键入,还支持递归类型的动态对象。这意味着你可以创建一个动态对象,...
- 递归结构:处理包含自我引用的对象时可能会导致无限循环。 - 空值处理:JSON中的null值在Java对象中如何映射。 - 键名不匹配:JSON键与Java字段名不一致,没有使用`@SerializedName`注解。 这个实验可能是在尝试...
为了处理未知的运算符,我们添加了一个默认运算符。当模式中使用的运算符未在`operators`中定义时,这个默认运算符会根据测试值的类型决定使用哪个运算符。例如,如果测试值是数组,就使用`in`运算符;如果是正则...
HL7 V3中的XML ITS(Implementation Technology Specification)定义了一系列抽象类型,如ANY,用于表示任何未知或未指定的类型。这些抽象类型在实际应用中可以通过具体的引用类型(Derived Type)进行实例化。例如...