[英]Deserialize json object to array
我有一個 Json 文件,如下所示,我想創建一個包含["h","hg","g","f"]
的name
數組。
[
{
"name": "h",
"dir": "h",
"valid": false
},
{
"name": "hg",
"dir": "fg",
"valid": false
},
{
"name": "g",
"dir": "f",
"valid": false
},
{
"name": "f",
"dir": "fgh",
"valid": false
}
]
我已經完成了獲取名稱的值,但不是所有名稱的數組。
dynamic data = JArray.Parse(Var.txt); //get text in json file
string name = data[0].name; //get name from first part
string dir = data[0].dir;
bool valid = data[0].valid;
Console.WriteLine("{0}\n{1}\n{2}",name[0], dir[0], valid); //write
您可以創建一個新的 class:
public class MyClass {
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("dir")]
public string Dir { get; set; }
[JsonProperty("valid")]
public bool Valid { get; set; }
}
然后只需使用反序列化:
var data = JsonConvert.DeserializeObject<MyClass[]>(myJsonResponse).Select(x => x.Name).ToArray();
作為替代方案,如果您的 JSON 中有大量項目並且不想反序列化,因為您只對name
感興趣,您也可以在System.Text.Json.JsonDocument
上進行操作。
假設您有 JSON,也許在您從.txt 讀取文件之后:
var txtContent = @"[{""name"": ""h"", ""dir"": ""h"", ""valid"": false }, {""name"": ""hg"",""dir"": ""fg"",""valid"": false},{""name"": ""g"",""dir"": ""f"",""valid"": false},{""name"": ""f"",""dir"": ""fgh"",""valid"": false}]"
var data = JsonDocument.Parse(txtContent);
然后你可以利用RootElement.EnumerateArray()
:
var list = data.RootElement.EnumerateArray().Select(element => element.GetProperty("name").GetString()).ToList();
但是,請注意,這是一種弱類型的方法,如果您打算進一步使用 JSON 數據並且可以承受反序列化,我寧願 go 也使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.