Newtonsoft json 访问数组 json
Newtonsoft json access array inside json
我有一个这样的 json 文件:
{
"foo": "bar",
"1": 0,
"array": [
"foo",
"bar"
]
}
我可以像这样访问“foo”和“1”:
using Newtonsoft.Json
JObject o = JObject.Parse(json)
Console.WriteLine((string)o["foo"]) // prints "bar"
Console.WriteLine((int)o["1"]) // prints 0
但是我怎样才能访问数组呢?我需要一个字符串数组 string[]
.
您可以使用以下方法从 JArray 获取字符串数组:
o["array"].Select(x => x.Value<string>()).ToArray()
JArray jsonArray = (JArray)o["array"];
string[] stringArray = jsonArray.ToObject<string[]>();
JObject
的索引运算符return是一个JToken
需要转换为JArray
- 您可以在其上调用
ToObject
,您可以在其中将 return 类型指定为字符串数组
更新 #1
嗯,您不需要显式地将 JToken
转换为 JArray
,因为 ToObject
是在 JToken
上定义的。所以下面的代码就足够了:
var stringArray = o["array"].ToObject<string[]>();
您可以使用以下方式访问数组(JArray
的实例):
JArray arr = (JArray)o["array"];
要迭代它的元素,您可以使用数组的 Children
method。
完整代码示例:
using System;
using Newtonsoft.Json.Linq;
namespace ConsoleAppCS
{
class Program
{
static void Main(string[] args)
{
string jsonStr = "{ \"foo\": \"bar\", \"1\": 0, \"array\": [ \"foo\", \"bar\" ] }";
JObject o = JObject.Parse(jsonStr);
Console.WriteLine((string)o["foo"]); // prints "bar"
Console.WriteLine((int)o["1"]); // prints 0
JArray arr = (JArray)o["array"];
foreach (var elem in arr.Children())
{
Console.WriteLine((string)elem); // print the array element
}
}
}
}
输出:
bar
0
foo
bar
我有一个这样的 json 文件:
{
"foo": "bar",
"1": 0,
"array": [
"foo",
"bar"
]
}
我可以像这样访问“foo”和“1”:
using Newtonsoft.Json
JObject o = JObject.Parse(json)
Console.WriteLine((string)o["foo"]) // prints "bar"
Console.WriteLine((int)o["1"]) // prints 0
但是我怎样才能访问数组呢?我需要一个字符串数组 string[]
.
您可以使用以下方法从 JArray 获取字符串数组:
o["array"].Select(x => x.Value<string>()).ToArray()
JArray jsonArray = (JArray)o["array"];
string[] stringArray = jsonArray.ToObject<string[]>();
JObject
的索引运算符return是一个JToken
需要转换为JArray
- 您可以在其上调用
ToObject
,您可以在其中将 return 类型指定为字符串数组
更新 #1
嗯,您不需要显式地将 JToken
转换为 JArray
,因为 ToObject
是在 JToken
上定义的。所以下面的代码就足够了:
var stringArray = o["array"].ToObject<string[]>();
您可以使用以下方式访问数组(JArray
的实例):
JArray arr = (JArray)o["array"];
要迭代它的元素,您可以使用数组的 Children
method。
完整代码示例:
using System;
using Newtonsoft.Json.Linq;
namespace ConsoleAppCS
{
class Program
{
static void Main(string[] args)
{
string jsonStr = "{ \"foo\": \"bar\", \"1\": 0, \"array\": [ \"foo\", \"bar\" ] }";
JObject o = JObject.Parse(jsonStr);
Console.WriteLine((string)o["foo"]); // prints "bar"
Console.WriteLine((int)o["1"]); // prints 0
JArray arr = (JArray)o["array"];
foreach (var elem in arr.Children())
{
Console.WriteLine((string)elem); // print the array element
}
}
}
}
输出:
bar
0
foo
bar