What is the best way to convert Newtonsoft JSON's JToken to JArray?
给定JSON中的数组,我正在尝试找到将其转换为JArray的最佳方法。
例如-考虑下面的C#代码:
1 2 3 | var json = @"{ ""cities"": [""London"",""Paris"",""New York""] }"; |
我可以将此JSON读取为JObject
1 | var jsonObject = JObject.Parse(json); |
现在,我将获得"城市"字段。
1 | var jsonCities = jsonObject["cities"]; |
在这里,我得到
我知道
我目前的工作方式是这样的-
1 | var cities = JArray.FromObject(jsonCities); |
我试图找出是否有更好的方法将其转换为JArray。
其他人如何使用它?
接受的答案实际上应该是dbc的注释。
在提议转换为JArray之后,我们可以通过检查null值来验证结果:
1 2 3 4 | var jsonCities = jsonObject["cities"] as JArray; if (jsonCities == null) return; ...do your thing with JArray... |
编辑:
如dbc所述,代表JArray的JToken已经是JArray。
也就是说,如果JToken.Type等于JTokenType.Array。如果是这样,可以使用
在这种情况下,我们知道我们可以简单地从JToken转换为JArray,因此这给了我们另一种可能性。我希望它会更快,但是我把它留给别人去做。
在这里,我们使用c#类通过反序列化字符串来存储jsonString的内容。
以下是一个基本示例。
为了进一步阅读,我将带您到Newtonsoft.Json网站。
https://www.newtonsoft.com/json/help/html/DeserializeObject.htm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | class Program { static void Main(string[] args) { var json = @"{""cities"": [""London"",""Paris"",""New York""]}"; MyObject result = JsonConvert.DeserializeObject<MyObject>(json); foreach (var city in result.Cities) { Console.WriteLine(city); } Console.ReadKey(); } public class MyObject { [JsonProperty("cities")] public List<string> Cities { get; set; } } } |