【问题标题】:How to parse data from Web Service in ASP.net如何在 ASP.net 中解析来自 Web 服务的数据
【发布时间】:2012-01-06 20:09:36
【问题描述】:

我正在从 SOAP 服务向 asp.net 检索字符串。 我无法理解如何解析这个字符串并转换成什么变量类型?大批?收藏?目的?。检索到的字符串如下所示:

<string>
[{"Category":"Mobile Common Needs","CategoryID":"{6039207E61CB}","ProductCount":8,"DisplayName":"Mobile Common Needs"},{"Category":"A Vitamins","CategoryID":"{DB3AD2CE2EAD}","ProductCount":4,"DisplayName":"A Vitamins"},{"Category":"B Complex","CategoryID":"{82133AF08331}","ProductCount":7,"DisplayName":"B Complex"},{"Category":"B Vitamins","CategoryID":"{4BE6939D8F7E}","ProductCount":9,"DisplayName":"B Vitamins"},{"Category":"C Vitamins","CategoryID":"{29D6977A7DCB}","ProductCount":9,"DisplayName":"C Vitamins"},{"Category":"D Vitamins","CategoryID":"{FF8A7E14F1E5}","ProductCount":7,"DisplayName":"D Vitamins"},{"Category":"E Vitamins","CategoryID":"{459AEF26893A}","ProductCount":6,"DisplayName":"E Vitamins"},{"Category":"Health Solutions","CategoryID":"{44C28190872F}","ProductCount":10,"DisplayName":"Health Solutions"},{"Category":"Herb Supplements","CategoryID":"{C24C77EC05EF}","ProductCount":15,"DisplayName":"Herb Supplements"},{"Category":"Minerals","CategoryID":"{A9153D05AAEE}","ProductCount":13,"DisplayName":"Minerals"},{"Category":"Multivitamins","CategoryID":"{79E8951CAC06}","ProductCount":13,"DisplayName":"Multivitamins"},{"Category":"Sleep Aid","CategoryID":"{1D2F16A124BB}","ProductCount":1,"DisplayName":"Sleep Aid"},{"Category":"Supplements","CategoryID":"{9BE59D6B9B23}","ProductCount":22,"DisplayName":"Supplements"},{"Category":"Vitamin Packs","CategoryID":"{9FE0A91C0AA3}","ProductCount":5,"DisplayName":"Vitamin Packs"}]
</string>

【问题讨论】:

    标签: asp.net xml json asp.net-mvc-3


    【解决方案1】:

    您正在检索的是其中包含 JSON 数据的 XML。

    如果您从中提取 JSON 字符串,那么您可以通过多种方式使用此返回字符串。您可以使用 JSON 结构中提到的所有字段(Category、CategoryID、ProductCount、DisplayName)为其创建自定义类,然后将字符串序列化为自定义类类型的对象。

    这看起来像:

    DataContractJsonSerializer serializer = 
        new DataContractJsonSerializer(typeof(YourObjectType));
    
    YourObjectType = (YourObjectType)serializer.ReadObject(str);
    

    您也可以像这样在 C#4 中使用新的动态关键字:

    using System.Web.Script.Serialization;
    JavaScriptSerializer jss = new JavaScriptSerializer();
    var d=jss.Deserialize<dynamic>(str);
    

    然后,您不必为对象定义类,并且可以通过 d.Category 访问项目,例如,在运行时 .NET 将检查该属性是否可用。

    【讨论】:

    • 哇,我在 google 上苦苦挣扎了 5 个小时,而你在 5 分钟内解决了我的问题。谢谢你,先生.. ;)
    • 很抱歉再次打扰,我现在使用的是第二种方法 Deserialize。但后来我使用 foreach 循环以键和值格式提取数据,但是有没有办法可以将它用作类对象并像 d.ProductName 一样简单地使用它,谢谢您的帮助..
    • 没关系,我想通了。刚刚创建了一个产品类并使用了这个 List oList2 = jss.Deserialize>(strProducts);
    猜你喜欢
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 2021-05-10
    • 2019-10-17
    相关资源
    最近更新 更多