使用JavaScriptSerializerDeserialize反序列化后 无法访问对象中的值

Y御剑逍遥Y 2019-08-22 04:01:56


图中我把获取到的json数据 反序列化后,Dim dsr As Array = serializer.DeserializeObject(SymbolsText),给到dsr数组对象,监视窗口已经能够正确显示内部数据,但是程序中不知道如何获取内部的值,搞了好几天了,望高手给予指点。
...全文
301 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
XBodhi. 2019-08-31
  • 打赏
  • 举报
回复
上面是例子。这个更简单些。
XBodhi. 2019-08-31
  • 打赏
  • 举报
回复
using System;

class MyApplication
{
    static void Main()
    {
        string jsonString = "{\"Result\":{\"ResponseStatus\":{\"IsSuccess\":true,\"Errors\":[],\"SuccessEntitys\":[{\"Id\":100074,\"Number\":\"DD2019080041\",\"DIndex\":0}],\"SuccessMessages\":[],\"MsgCode\":0},\"Id\":100074,\"Number\":\"DD2019080041\",\"NeedReturnData\":[{}]}}";
        dynamic obj = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(jsonString);
        bool isSuccess = obj.Result.ResponseStatus.IsSuccess;
    }
}
Y御剑逍遥Y 2019-08-31
  • 打赏
  • 举报
回复
引用 7 楼 XBodhi.的回复:
推荐你用 Dynamic 和 Newsofton.Json
这个我知道,不过现在实现了,感觉比Newsofton.Json还要简单
XBodhi. 2019-08-31
  • 打赏
  • 举报
回复
推荐你用 Dynamic 和 Newsofton.Json
Y御剑逍遥Y 2019-08-31
  • 打赏
  • 举报
回复
感谢,我重新定义了类,反序列化采用数组,搞定了。谢谢热心指导
Y御剑逍遥Y 2019-08-26
  • 打赏
  • 举报
回复
引用 1 楼 stherix的回复:
强烈建议建立数据的实体类 DataEntity 然后serializer.Deserialize<DataEntity>(SymbolsText) 来得到已于访问的数据结构 你这样只能 (dsr(序号) as KetValuePair(Of String,Object)).Value as String 或者 (dsr(序号) as KetValuePair(Of String,Object)).Value as Double来得到值 因为它反序列化得到的是个string,object的字典
您好,按您的指导,我任然无法获取,是否能再说的详细些,谢谢。实体数据如下 [{"base-currency":"tnt","quote-currency":"btc","price-precision":10,"amount-precision":0,"symbol-partition":"innovation","symbol":"tntbtc","state":"online","value-precision":8,"min-order-amt":1,"max-order-amt":10000000,"min-order-value":0.0001}, {"base-currency":"iris","quote-currency":"usdt","price-precision":4,"amount-precision":2,"symbol-partition":"innovation","symbol":"irisusdt","state":"online","value-precision":8,"min-order-amt":1,"max-order-amt":6500000,"min-order-value":1}]
stherix 2019-08-26
  • 打赏
  • 举报
回复
引用 4 楼 sunsky517 的回复:
[quote=引用 1 楼 stherix的回复:]强烈建议建立数据的实体类 DataEntity 然后serializer.Deserialize<DataEntity>(SymbolsText) 来得到已于访问的数据结构 你这样只能 (dsr(序号) as KetValuePair(Of String,Object)).Value as String 或者 (dsr(序号) as KetValuePair(Of String,Object)).Value as Double来得到值 因为它反序列化得到的是个string,object的字典
您好,按您的指导,我任然无法获取,是否能再说的详细些,谢谢。实体数据如下 [{"base-currency":"tnt","quote-currency":"btc","price-precision":10,"amount-precision":0,"symbol-partition":"innovation","symbol":"tntbtc","state":"online","value-precision":8,"min-order-amt":1,"max-order-amt":10000000,"min-order-value":0.0001}, {"base-currency":"iris","quote-currency":"usdt","price-precision":4,"amount-precision":2,"symbol-partition":"innovation","symbol":"irisusdt","state":"online","value-precision":8,"min-order-amt":1,"max-order-amt":6500000,"min-order-value":1}][/quote] 其实你不是在监视界面看到dsr的数据类型了吗 dsr是个数组,元素类型是Dictionary(of string,object) 其中object有的是string,有的是double dsr(1)就是个字典,里面元素其实就是你的字符串里面的键值对 或者你把json的字符串在vs菜单里 编辑 - 选择性粘贴 - 将json粘贴为类 这样可以自动生成实体类
Y御剑逍遥Y 2019-08-22
  • 打赏
  • 举报
回复
谢谢指导 我一会根据你后面的方法试试
Y御剑逍遥Y 2019-08-22
  • 打赏
  • 举报
回复
引用 1 楼 stherix的回复:
强烈建议建立数据的实体类 DataEntity 然后serializer.Deserialize<DataEntity>(SymbolsText) 来得到已于访问的数据结构 你这样只能 (dsr(序号) as KetValuePair(Of String,Object)).Value as String 或者 (dsr(序号) as KetValuePair(Of String,Object)).Value as Double来得到值 因为它反序列化得到的是个string,object的字典
我之前也这样做过,但是这个类可能建立的不正确,反序列化后,类中没有数据
stherix 2019-08-22
  • 打赏
  • 举报
回复
强烈建议建立数据的实体类 DataEntity 然后serializer.Deserialize<DataEntity>(SymbolsText) 来得到已于访问的数据结构 你这样只能 (dsr(序号) as KetValuePair(Of String,Object)).Value as String 或者 (dsr(序号) as KetValuePair(Of String,Object)).Value as Double来得到值 因为它反序列化得到的是个string,object的字典

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧