无法在 C# 中反序列化 JSON 响应

纳伦纳特

所以我目前正在尝试反序列化一个 JSON API。我使用的代码与我成功用于其他 API 的代码相同。但是每个变量都只返回 0。

    public class RootObject
{
    public int lat { get; set; }
    public int lon { get; set; }
    public DateTime date_iso { get; set; }
    public int date { get; set; }
    public double value { get; set; }
}

public class UVGetter
{
    public static async Task<RootObject> UVApiProxy(double lat, double lon)
    {
        var Timestamp = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();

        var http = new HttpClient();
        string WeatherApiKey = "secret";
        var url = String.Format($"https://api.openweathermap.org/data/2.5/uvi/history?appid=" + WeatherApiKey + "&lat=" + Math.Round(lat) + "&lon=" + Math.Round(lon) + "&start=" + Timestamp + "&end=" + Timestamp);
        var response = await http.GetAsync(url);
        var result = await response.Content.ReadAsStringAsync();
        var serializer = new DataContractJsonSerializer(typeof(RootObject));

        var ms = new MemoryStream(Encoding.UTF8.GetBytes(result));
        var uvdata = (RootObject)serializer.ReadObject(ms);
        Agara.Program.WeatherApiCalls++;
        Console.WriteLine(uvdata.lat + "\n" + uvdata.lon + "\n" + uvdata.date_iso.ToString() + "\n" + uvdata.date + "\n" + uvdata.value);
        return uvdata;
    }
}

结果看起来像这样

[{"lat":54,"lon":9,"date_iso":"2018-05-08T12:00:00Z","date":1525780800,"value":5.62}]

变量(例如 uvdata.lat)只包含零,尽管 API 信息应该存储在这些变量中。

编码器

该JSON不包含RootObject,这是一个数组RootObject所以:

var serializer = new DataContractJsonSerializer(typeof(RootObject[]))
// ...
var uvdata = (RootObject[])serializer.ReadObject(ms);

或者,使用Newtonsoft.Json

var uvData = JsonConvert.DeserializeObject<RootObject[]>(result);

您也可以反序列化为一个List<RootObject>而不是数组。

如果要保留前导零,请将这些属性反序列化为字符串,因为整数没有该概念,因此:

public class RootObject
{
    public string lat { get; set; }
    public string lon { get; set; }
    public DateTime date_iso { get; set; }
    public int date { get; set; }
    public double value { get; set; }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法反序列化JSON响应

来自分类Dev

JSON响应未在C#中反序列化?

来自分类Dev

无法反序列化来自Flurry API的json响应

来自分类Dev

C#反序列化JSON Web API响应

来自分类Dev

反序列化此JSON响应到C#

来自分类Dev

Azure JSON响应反序列化C#

来自分类Dev

反序列化对C#对象错误的JSON响应

来自分类Dev

C#:“无法反序列化当前JSON数组”

来自分类Dev

无法在两端使用相同的类在C#中反序列化JSON

来自分类Dev

无法在C#中反序列化JSON结果。输入字符串格式错误

来自分类Dev

无法从 C# 中的 IMGUR API 反序列化当前的 JSON 对象错误

来自分类Dev

C#JSON.net无法从文件反序列化和重新序列化对象

来自分类Dev

反序列化动态JSON响应

来自分类Dev

反序列化echonest JSON响应

来自分类Dev

我无法在列表视图中反序列化我的json响应

来自分类Dev

无法将 JSON 响应反序列化为 Java 对象

来自分类Dev

无法在Java Servlet中反序列化JSON

来自分类Dev

无法在UWP应用中反序列化JSON

来自分类Dev

Json 无法反序列化 Spring 中的实例错误

来自分类Dev

无法使用列表中的列表反序列化 JSON

来自分类Dev

Json反序列化Web客户端响应C#

来自分类Dev

带有空格的反序列化 JSON 响应 C# 类

来自分类Dev

C# 反序列化一个 Json 响应

来自分类Dev

用于反序列化来自 HERE Maps API 的 JSON 响应的 C# 对象

来自分类Dev

C#在JSON中反序列化JSON

来自分类Dev

Java无法反序列化JSON

来自分类Dev

无法反序列化JSON

来自分类Dev

无法反序列化JSON内容

来自分类Dev

Json Array无法反序列化