gpt4 book ai didi

c# - 使用 JavaScriptSerializer() 反序列化 JSON 文件

转载 作者:IT老高 更新时间:2023-10-28 12:49:02 28 4
gpt4 key购买 nike

我将反序列化的 json 文件的结构如下所示;

{
"id" : "1lad07",
"text" : "test",
"url" : "http:\/\/twitpic.com\/1lacuz",
"width" : 220,
"height" : 84,
"size" : 8722,
"type" : "png",
"timestamp" : "Wed, 05 May 2010 16:11:48 +0000",
"user" : {
"id" : 12345,
"screen_name" : "twitpicuser"
}
}

我创建了一个类,该类将文件名作为 JavaScriptSerializer 的属性。我将用来反序列化 json 的代码如下;

            using (var reader = new StreamReader(twitpicResponse.GetResponseStream())) {


var responseBody = reader.ReadToEnd();
var deserializer = new JavaScriptSerializer();
var results = deserializer.Deserialize<Response>(responseBody);

}

我的问题是如何读取 json 文件中的用户字段。如下所示;

"user" : {
"id" : 12345,
"screen_name" : "twitpicuser"
}

它有子属性和值。我如何在我的 Response 类(class)中命名它们。我的响应类现在看起来像这样;

public class Response {

public string id { get; set; }
public string text { get; set; }
public string url { get; set; }
public string width { get; set; }
public string height { get; set; }
public string size { get; set; }
public string type { get; set; }
public string timestamp { get; set; }

}

最好的情况是什么?

最佳答案

  1. 您需要创建一个保存用户值的类,就像响应类 User 一样。
  2. 使用用户值 User 的新类的类型向响应类“用户”添加一个属性。

    public class Response {

    public string id { get; set; }
    public string text { get; set; }
    public string url { get; set; }
    public string width { get; set; }
    public string height { get; set; }
    public string size { get; set; }
    public string type { get; set; }
    public string timestamp { get; set; }
    public User user { get; set; }

    }

    public class User {

    public int id { get; set; }
    public string screen_name { get; set; }

    }

一般来说,您应该确保 json 的属性类型和您的 CLR 类匹配。 您尝试反序列化的结构似乎包含多个数值(很可能 int)。我不确定 JavaScriptSerializer 是否能够自动将数字反序列化为字符串字段,但无论如何您都应该尝试使 CLR 类型尽可能接近实际数据。

关于c# - 使用 JavaScriptSerializer() 反序列化 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5502245/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com