给定JSON中的数组,我试图找到将其转换为JArray的最佳方法。 例如 - 请考虑以下C#代码:
var json = @"{
""cities"": [""London"", ""Paris"", ""New York""]
}";
我可以将这个JSON作为 -
读入JObjectvar jsonObject = JObject.Parse(json);
现在我将获得“城市”字段。
var jsonCities = jsonObject["cities"];
这里我将jsonCities作为JToken
类型。
我知道jsonCities
是一个数组,所以我想把它转换为JArray
。
我目前的做法是这样的 -
var cities = JArray.FromObject(jsonCities);
我试图找出是否有更好的方法将其转换为JArray。 其他人如何使用它?
答案 0 :(得分:3)
在建议转换为JArray之后,我们可以通过检查空值来验证结果:
var jsonCities = jsonObject["cities"] as JArray;
if (jsonCities == null) return;
...do your thing with JArray...
如dbc所述,代表JArray的JToken已经是JArray。
也就是说,如果JToken.Type等于JTokenType.Array。如果是这样,可以使用as JArray
表示法对其进行访问。使用as
强制转换表示法时,强制转换失败将呈现null
值,如here所述。这样可以方便地验证您是否确实拥有可以使用的JArray。
JArray.FromObject(x)
需要一个object
,因此它可以与任何可以表示为object
并因此可以表示为JToken的东西一起使用。
在这种情况下,我们知道我们可以简单地从JToken转换为JArray,因此它给了我们另一种可能性。我希望它会更快,但是我把它留给别人去做。
答案 1 :(得分:-2)
这里我们使用c#类通过反序列化字符串来存储jsonString的内容。
以下是一个基本示例。
如需进一步阅读,我将指向Newtonsoft.Json网站。
https://www.newtonsoft.com/json/help/html/DeserializeObject.htm
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; }
}
}