如何访问JObject的子值

8

我有一个JObject对象,看起来像这样:

{

        "part":
         {
             "values": ["engine","body","door"]
             "isDelivered": "true"
        },
        {
        "manufacturer":
         {
             "values": ["Mercedes"]
             "isDelivered": "false" 
         }
}

如何在C#中将值作为单个字符串获取?


你想如何组合这些项目?例如,用逗号分隔?你是想要所有对象的所有值,还是只想将“part > values”和“manufacturer > values”作为单独的值字符串呈现? - ProgrammingLlama
谢谢您的快速回复。我想将键(例如“part”)和它们下面的值按照行中的格式保存,即一个简单的数组。 - Masinde Muliro
问题对我来说仍不清楚。你能发布一下输出应该是什么吗? - YouKnowMe
2个回答

13

首先从你的字符串创建JObject

String json = "{\"part\":{ \"values\": [\"engine\",\"body\",\"door\"], \"isDelivered\": \"true\"},\"manufacturer\":{\"values\": [\"Mercedes\"],\"isDelivered\": \"false\"}}";
JObject jObject = JObject.Parse(json);

然后获取值数组(例如从部分中)

JArray jArray= (JArray)jObject["part"]["values"];
将字符串的JArray转换为字符串数组
string[] valuesArray = jArray.ToObject<string[]>();

将您的字符串数组连接并创建一个单独的字符串

String values = string.Join(",",valuesArray);

完整代码在这里..

String json = "{\"part\":{ \"values\": [\"engine\",\"body\",\"door\"], \"isDelivered\": \"true\"},\"manufacturer\":{\"values\": [\"Mercedes\"],\"isDelivered\": \"false\"}}";
JObject jObject = JObject.Parse(json);
JArray jArray= (JArray)jObject["part"]["values"];
string[] valuesArray = jArray.ToObject<string[]>();
String values = string.Join(",",valuesArray);
Console.WriteLine(values);

2

首先,该JSON格式不正确,应为:

{
    "part":
    {
        "values": ["engine","body","door"],
        "isDelivered": "true"
    },
    "manufacturer":
    {
        "values": ["Mercedes"],
        "isDelivered": "false" 
    }
}

现在,让我们来到正题,我相信这就是您想要的。
var jObject = JObject.Parse(testJson);
var children = jObject.Children().Children();
var valuesList = new List<string>();
foreach (var child in children)
{
    valuesList.AddRange(child["values"].ToObject<List<string>>());
}
var valuesJsonArray = JsonConvert.SerializeObject(valuesList); // not sure if you want an array of strings or a json array of strings

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接