Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have a problem with deserializing a Json-string to an object.

This is a sample json i receive from a webservice:

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

And I have a class CityData that looks like this

[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; }
}

I try to deserialize the json with a call of the method DeserializeObject

var cityData = JsonConvert.DeserializeObject<CityData>(response);

but the root element seems to make problems...

Do you guys know how I can fix it, so that I receive a CityData-object with the data filled in?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
226 views
Welcome To Ask or Share your Answers For Others

1 Answer

The json response contains an object that within itself contains a json string representing the data result.

You need to deserialize twice, once for the response and one more for the data result.

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...