[英]Retrieving data from an Object(deserialized json) in C#
我有一個嘗試使用C#解析的JSON字符串。 我已經使用JsonConvert將數據序列化為JSON字符串。
這是我的示例JSON字符串:
{"names": ["John", "Joe", "Jack"], "nationality": "American"}
我可以使用JsonConvert.DeserializeObject(x);
將字符串反序列化為對象JsonConvert.DeserializeObject(x);
問題是,我不知道如何使用C#讀取對象。 有人可以幫我嗎?
更好的方法是定義一個具有預期結構的類,然后使用JavaScriptSerializer反序列化它:
class NameSet
{
public IList<string> names { get; set; }
public string nationality { get; set; }
}
var serializer = new JavaScriptSerializer();
var nameset = serializer.Deserialize<NameSet>(jsonString);
創建一個這樣的自定義類:
public class CustomData
{
public string[] Names { get; set; }
public string Nationality { get; set; }
public CustomData() { }
}
並使用JsonConvert反序列化此類型的對象:
CustomData data = JsonConvert.DeserializeObject<CustomData>(x);
以下內容就足夠了:
public class PeopleGroup {
public string[] names { get; set; }
public string nationality { get; set }
}
var myObject = JsonConvert.DeserializeObject<PeopleGroup>(x);
基本上,您將創建一個強類型的對象,然后直接對其進行反序列化。
public class People
{
[JsonProperty("names")]
public List<string> Names;
[JsonProperty("nationality")]
public string Nationality;
}
其他答案在技術上是正確的,但是使用JsonPropertyAttribute
是普遍接受的約定。 然后使用JsonConvert
:
var people = JsonConvert.DeserializeObject<People>(x);
如果您不想實際定義一個類,則可以使用匿名類型:
string json = "{\"names\": [\"John\", \"Joe\", \"Jack\"], \"nationality\": \"American\"}";
// Just defining the structure of the anonymous type
var x = new { names = new string[0], nationality = string.Empty };
x = JsonConvert.DeserializeAnonymousType(json, x);
您應該使用dataContractJsonSerializer類,它速度更快,最重要的是它是.Net Framework的內置類。 我將在下一個評論中發布解決方案,即如何使用DataContractJsonSerializer類。現在我無法發布解決方案,因為最終網絡太慢了:(,但是我今天將發布。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.