首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScriptSerializer.Deserialize数组

JavaScriptSerializer.Deserialize数组
EN

Stack Overflow用户
提问于 2012-01-27 21:11:50
回答 2查看 44.2K关注 0票数 21

我在对.NET MVC3中的数组进行反序列化时遇到了问题,如果有任何帮助,我将不胜感激。

下面是代码片段:

代码语言:javascript
复制
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
using (StreamReader reader = new StreamReader(response.GetResponseStream())) {
    JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
    string jsonData = reader.ReadToEnd();
    result = (BigCommerceOrderProducts)jsSerializer.Deserialize<BigCommerceOrderProducts>(jsonData);
}

下面是JSON以jsonData形式返回的数据字符串的子集。我删除了额外的字段。

代码语言:javascript
复制
"[
{\"id\":33,\"order_id\":230025,...},
{\"id\":34,\"order_id\":230025,...}
]"

以下是对象:

代码语言:javascript
复制
[Serializable]
public class BigCommerceOrderProducts {
    public List<BigCommerceOrderProduct> Data { get; set; }
}

[Serializable]
public class BigCommerceOrderProduct {
    public int Id { get; set; }
    public int Order_id { get; set; }
    ...
}

我得到了这个错误:

代码语言:javascript
复制
"Type 'Pxo.Models.BigCommerce.BigCommerceOrderProducts' is not supported for deserialization of an array.

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-27 21:26:04

您应该将json字符串反序列化为List<BigCommerceOrderProduct>类型。不需要BigCommerceOrderProducts

代码语言:javascript
复制
var myobj = jsSerializer.Deserialize<List<BigCommerceOrderProduct>>(jsonData);
票数 50
EN

Stack Overflow用户

发布于 2012-01-27 21:37:20

这个小程序对我来说很好。在响应流中可能会出现意外的情况。

json输出为:{"Data":{"Id":33,"Order_id":230025},{"Id":34,"Order_id":230025}}

代码语言:javascript
复制
    JavaScriptSerializer jsSerializer = new JavaScriptSerializer(); 

    BigCommerceOrderProducts a = new BigCommerceOrderProducts();
    a.Data = new List<BigCommerceOrderProduct>();
    BigCommerceOrderProduct b = new BigCommerceOrderProduct();
    b.Id = 33;
    b.Order_id = 230025;

    a.Data.Add(b);

    b = new BigCommerceOrderProduct();
    b.Id = 34;
    b.Order_id = 230025;

    a.Data.Add(b);

    string x = jsSerializer.Serialize(a);
    Console.WriteLine(x);

    a = jsSerializer.Deserialize<BigCommerceOrderProducts>(x);

    Console.WriteLine(a.Data[0].Order_id);

    Console.ReadLine();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9033730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档