0

我有一个JSON数据如下

 {"id": "367501354973","from": {
  "name": "Bret Taylor",
  "id": "220439"   }

由 IDictionary[String, Object] 的对象(结果)返回

在我的 C# 代码中:

我制作了一个用于存储 JSON 值的类,如下所示

public class SContent
{
    public string id { get; set; }
    public string from_name { get; set; }
    public string from_id { get; set; }
}

我的主要 C# 函数存储解析 JSON 数据并将值存储在类属性中,如下所示:

List<object> data = (List<object>)result["data"];
            foreach (IDictionary<string, object> content in data)
            {
                SContent s = new SContent();

                    s.id = (string)content["id"];
                    s.from_name = (string)content["from.name"];
                    s.from_id = (string)content["from.id"];

            }

当我执行这段代码时,我得到一个异常说系统找不到密钥“from.name”和“from.id”

当我评论这两行时 (s.from_name = (string)content["from.name"];s.from_id = (string)content["from.id"];)我的代码运行良好。

我认为我无法正确引用嵌套的 JSON 数据。

任何人都可以验证它,请告诉我如何在 C# 中引用 JSON 中的嵌套数据?

谢谢

4

1 回答 1

5

我不确定您是如何解析 JSON 字符串的。您是否使用框架中的类进行反序列化?

您可以使用命名空间JavaScriptSerializer中定义的类System.Web.Script.Serialization(您可能需要添加对 System.Web.dll 的引用)

使用该类,您将编写如下代码:

public class SContent
{
    public string id { get; set; }
    public SFrom from { get; set; }
}

public class SFrom 
{
    public string name { get; set; }
    public string id { get; set; }
}

然后反序列化看起来像这样:

var json = new JavaScriptSerializer();
var result = json.Deserialize<SContent>(/*...json text or stream...*/);

请参阅MSDN 上的JavaScriptSerializer。您可能还想查看这个类似的问题

于 2012-12-14T07:53:16.450 回答