C#子数组中的JSON反序列化

C#子数组中的JSON反序列化,c#,json,json.net,C#,Json,Json.net,我正在尝试使用Newtonsoft.Json对以下内容进行反序列化 { "max_id_str":"1234567", "results":[{ "created_at":"Tue, 21 May 2013 03:06:23 +0000", "from_user":"Name Here", "from_user_id":33333, "text":"THE TEXT GOES HERE" }], "r

我正在尝试使用Newtonsoft.Json对以下内容进行反序列化

{
    "max_id_str":"1234567",
    "results":[{
        "created_at":"Tue, 21 May 2013 03:06:23 +0000",
        "from_user":"Name Here",
        "from_user_id":33333,
        "text":"THE TEXT GOES HERE"
    }],
    "results_per_page":1,
    "since_id":0,
    "since_id_str":"0"
}
我可以使用反序列化检索max_id_str,但无法获取“results”中的任何数据

这是我的密码

public class tweet
    {
        public string max_id_str { get; set; }
        public string text{ get; set; }
        public string results_per_page{ get; set; }
        public string since_id { get; set; }
        public string since_id_str { get; set; }
    }
然后,我创建一个类的对象,并尝试将其反序列化为对象

tweet t = new tweet();
t = JsonConvert.DeserializeObject<tweet>(e.Result);
tweet t t=新tweet();
t=JsonConvert.DeserializeObject(如Result);

除了“文本”之外的所有内容都会被填充?当我输出值时,文本的值为空。你知道如何完成我的任务吗?

这是因为
text
是一个子元素,而在你的C#object中,你直接在tweet中看到它。您缺少作为属性的
results
对象。反序列化程序无法知道将这些值放在何处(没有相应的属性)。

我不确定将JSON字符串反序列化为该类型会得到什么结果,
text
不是对象的属性,因此没有理由期望它这样做<代码>文本是
结果
列表中对象的属性。您还需要映射这些对象,然后通过
result
对象访问文本

public class tweet
{
    public string max_id_str { get; set; }
    //public string text{ get; set; }
    public List<result> results { get; set; }
    public string results_per_page{ get; set; }
    public string since_id { get; set; }
    public string since_id_str { get; set; }
}

public class result
{
    public string created_at { get; set; }
    public string from_user { get; set; }
    public int from_user_id { get; set; }
    public string text { get; set; }
}

对应的
tweet
类成员在哪里?您希望将
结果
数组反序列化到何处?我只想写几乎相同的:)好东西。这为我解答了这个问题,谢谢。我不知道我到底在想什么。@Bawlsout:只是为了好玩,我添加了一个转换器示例,如果这是您所期望的,它可以读取该值。仅供参考,您还可以反序列化到
动态
列表,并检查返回的对象--它有哪些属性。谢谢,您的示例以及Jeff的回复解决了我的问题。回过来@大喊大叫:你明白了吗干杯
public class tweet
{
    public string max_id_str { get; set; }
    [JsonProperty("results")]
    [JsonConverter(typeof(TextPropertyResultExtractorConverter))]
    public string text { get; set; }
    public string results_per_page{ get; set; }
    public string since_id { get; set; }
    public string since_id_str { get; set; }
}

public class TextPropertyResultExtractorConverter : JsonConverter
{
    public override bool CanConvert(Type type)
    {
        throw new NotImplementedException();
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        var results = (JArray)serializer.Deserialize(reader);
        var result = results.First();
        return result.Value<string>("text");
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        throw new NotImplementedException();
    }
}