简体   繁体   English

使用Json.Net反序列化嵌套的json对象返回null

[英]Deserialize nested json objects using Json.Net returns null

I am getting the following nested Json objects from an API I am calling. 我从正在调用的API获取以下嵌套的Json对象。

{"status":"success","data":{"valid_for":3600,"token":"access_token","expires":1123123123123}}

The PostResponse class is like below PostResponse类如下所示

public class PostResponse
{
    public string status { get; set; }
    public Data data { get; set; }
}

public class Data
{
    public int valid_for { get; set; }
    public string token { get; set; }
    public int expires { get; set; }
}

I get null for postResponse with this code. 我用此代码获得的postResponse为空。

using (StreamReader reader = new StreamReader(resp.GetResponseStream()))
{
     Console.WriteLine(reader.ReadToEnd());
     postResponse = JsonConvert.DeserializeObject<PostResponse>(reader.ReadToEnd());
}

You need to reset your stream pointer position, since you already read from a stream when you used WriteLine method. 您需要重置流指针位置,因为在使用WriteLine方法时您已经从流中读取了。

Stream stream = resp.GetResponseStream();
using (StreamReader reader = new StreamReader(stream))
{
    Console.WriteLine(reader.ReadToEnd());

    stream.Position = 0; //Reset position pointer
    reader.DiscardBufferedData();

    postResponse = JsonConvert.DeserializeObject<PostResponse>(reader.ReadToEnd());
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM