我将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方法
来反序列化jsonvar cityData = JsonConvert.DeserializeObject<CityData>(response);
但根元素似乎有问题......
你们是否知道如何解决这个问题,以便收到填写了数据的CityData对象?
答案 0 :(得分:10)
json响应包含一个对象,该对象本身包含表示数据结果的json字符串。
您需要反序列化两次,一次用于响应,另一次用于数据结果。
var response = JsonConvert.DeserializeObject<JObject>(responseStr);
var dataResult = (string)response["GetDataResult"];
var cityData = JsonConvert.DeserializeObject<CityData>(dataResult);