如何使用C#反序列化Json数组?

问题描述 投票:-4回答:1

我使用RestSharp进行Rest API调用。

public class GetValues
{
    public string Values{ get; set; }
}

public class JsonObjects
{
    public List<GetValues> Values{ get; set; }
}

RestRequest restRequest = new RestRequest("api/tempCatalog/temp1", Method.GET);

restRequest.AddHeader("Accept", "application/json");
restRequest.AddHeader("Content-Type", "application/json");
restRequest.AddHeader("Authorization", token);

IRestResponse restResponse = clientRest.Execute(restRequest );
string Content = restResponse.Content;

JsonObjects.Values= JsonConvert.DeserializeObject<JsonObjects>(Content).Values;

我有上面的代码,它可以工作。

但是当JSON Rest Response包含一个数组时,在反序列化时会引发异常。

[当休息响应是这样的时候,有时,

{ "Fields": [ "Value.temp", ] } 

我收到此异常:

Newtonsoft.Json.JsonSerializationException:'错误转换值'

ArgumentException:无法转换或从System.String转换为Namespace.GetValues。

[当我说有时候我的意思是我在多个API中使用此反序列化时,在问题中这只是一个例子,

c# json json.net restsharp json-deserialization
1个回答
2
投票

如果我没看错的话,将得到以下JSON字符串:

{ 
    "Fields": [ 
        "Value.temp", 
    ] 
}

您要反序列化的类必须与此结构匹配,但不幸的是,您的不匹配。

所以JsonObjects必须看起来像这样:

public class JsonObjects
{
    public List<string> Fields { get; set; }
}
© www.soinside.com 2019 - 2024. All rights reserved.