反序列化部分JSON

时间:2014-03-14 16:19:14

标签: c# json.net

我将Json字符串反序列化为对象时遇到问题。

这是我从网络服务收到的json示例:

{
    "GetDataResult":
                 "{
                     \"id\":1234,
                     \"cityname\":\"New York\",
                     \"temperature\":300,
                  }"
}

我有一个类似CityData的课程

[JsonObject("GetDataResult")]
public class CityData
{
    [JsonProperty("id")]
    public int Id { get; set; }

    [JsonProperty("cityname")]
    public string CityName { get; set; }

    [JsonProperty("temperature")]
    public int Temperature { get; set; }
}

我尝试通过调用DeserializeObject方法

来反序列化json
var cityData = JsonConvert.DeserializeObject<CityData>(response);

但根元素似乎有问题......

你们是否知道如何解决这个问题,以便收到填写了数据的CityData对象?

1 个答案:

答案 0 :(得分:10)

json响应包含一个对象,该对象本身包含表示数据结果的json字符串。

您需要反序列化两次,一次用于响应,另一次用于数据结果。

var response = JsonConvert.DeserializeObject<JObject>(responseStr);
var dataResult = (string)response["GetDataResult"];
var cityData = JsonConvert.DeserializeObject<CityData>(dataResult);