![]() | 1 strawberryBug 2022-05-22 18:42:53 +08:00 via Android jsonPath |
![]() | 2 xupefei 2022-05-22 18:47:31 +08:00 via iPhone dynamic ? |
3 andrew2558 2022-05-22 18:51:07 +08:00 不是可以直接反序列化吗?再复杂都可以 |
![]() | 4 lukaz 2022-05-22 19:31:36 +08:00 via iPhone JToken |
![]() | 5 BiChengfei 2022-05-22 20:11:16 +08:00 ![]() json 工具类反序列化都可以吧 |
6 ration 2022-05-22 21:26:57 +08:00 via Android 其实建议还是用类转化。 |
![]() | OP @andrew2558 为什么我之前好像用 dictionary<string,ArrayList<dictionary<string,object>>> 这样的类型做转换类型,会报错,是我哪里写的有问题吗 |
8 INCerry 2022-05-23 11:45:17 +08:00 和 java 一样的 dictionary 就可以了 |
![]() | 9 yuandong 2022-05-29 21:25:27 +08:00 JToken |
![]() | 10 sinnosong1 2022-05-30 09:46:34 +08:00 @qiyue0726 namespace:Newtonsoft.Json.Linq 这样写 JObject.Parse(apiResponse).SelectToken("detail").Value<string>() |
![]() | 11 qiyue0726 OP @sinnosong1 我没用过 linq ,这看起来是把 json 字符串当成数据库去查询? |
![]() | 12 sinnosong1 2022-05-31 22:08:48 +08:00 ![]() @qiyue0726 不是的,JObject.Parse()之后返回的是 JToken 对象(可以理解为 Gson 库提供的 JsonObject ),然后可以对 JToken 使用 SelectToken()方法查询这个 JToken 中的第一层属性,如果属性也是对象的话还可以继续查询。example: var str = "{\"name\":{\"age\":1},\"address\":\"china\"}"; JObject jsOnObj= JObject.Parse(str); var age = jsonObj.SelectToken("name").SelectToken("age").Value<int>(); Console.WriteLine(age+", type:"+age.GetType()); var address=jsonObj.SelectToken("address").Value<string>(); Console.WriteLine(address+", type:"+address.GetType()); |
![]() | 13 sinnosong1 2022-05-31 22:09:16 +08:00 @qiyue0726 实际就是 linq |
14 forgottencoast 2022-06-02 22:45:20 +08:00 如果你想要性能,或是读取其中某些值,那就用流( Reader )来处理。 如果你需要整个 json 对象,那就用反序列化成对象。 还有像使用 HTML DOM 一样来处理的方式( Document ),如果你熟悉这个也可以用这种方式。 |
![]() | 15 Kevin2 2022-06-21 13:13:04 +08:00 |
![]() | 16 ColinZeb 2022-07-29 16:08:49 +08:00 @sinnosong1 这不是 linq ,这是动态对象 |