【问题标题】:Use JavaScriptSerializer to Deserialize object when JSON is wrapped包装 JSON 时使用 JavaScriptSerializer 反序列化对象
【发布时间】:2011-06-13 16:54:15
【问题描述】:

JSON 示例:

{
  "1":{
       "guid":"8a40135230891fa70130891ff1000009",
       "portalId":23832
      }
}

我用来反序列化的代码是:

var serializer = new JavaScriptSerializer();
var lead = serializer.Deserialize<WebHookResponse>([json]);

我与反序列化代码一起使用的代码是:

public class WebHookResponse
{
  public HubspotRecord Record { get; set; }
}

省略了组成 HubspotRecord 的代码。当我对未包裹在“1”后面的 json 数据运行该过程时,它可以完美运行。

目前我认为我的问题是 json 被包裹在“1”中。由于命名约定,我无法将属性与 JavaScriptSerializer 一起使用,也无法创建标记为“1”的根元素。

有什么想法吗?

【问题讨论】:

    标签: c# json javascriptserializer


    【解决方案1】:

    尝试使用Dictionary&lt;string, HubspotRecord&gt; 或Dictionary&lt;string, WebHookResponse&gt; 对其进行反序列化。我不能说我已经使用了很多 JavaScriptSerializer,但我希望它能够在数据库中创建一个带有“1”键和适当值的条目。无论如何,值得一试:)

    或者,您可能希望将 Json.NET 中的它加载到类似 DOM 的结构中,然后反序列化您真正想要的位。

    【讨论】:

    • 快速回答。和一个很好的。 var dictionary = serializer.Deserialize&lt;Dictionary&lt;string, HubspotRecord&gt;&gt;(result);
    • 太棒了!我在尝试在带有 Xamarin/JSON.Net 的 iOS 设备上使用 jarray 时遇到了异常。这个解决方案是一个不错的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 2015-01-11
    相关资源
    最近更新 更多