我正在寻找最好的方法来获取JSON字符串的一部分,而不是使用SelectTokens(JPath)获取JTOken集合。
例如:
JObject o = JObject.Parse(@"{
'Stores': [
'Lambton Quay',
'Willis Street'
],
'Manufacturers': [
{
'Name': 'Acme Co',
'Products': [
{
'Name': 'Anvil',
'Price': 50
}
]
},
{
'Name': 'Contoso',
'Products': [
{
'Name': 'Elbow Grease',
'Price': 99.95
},
{
'Name': 'Headlight Fluid',
'Price': 4
}
]
}
]
}");
List<JToken> manufactures = o.SelectTokens("Manufacturers");
我需要输出JSON字符串,而不是JToken的集合。
预期输出:
{
"Manufacturers": [
{
"Name": "Acme Co",
"Products": [
{
"Name": "Anvil",
"Price": 50
}
]
},
{
"Name": "Contoso",
"Products": [
{
"Name": "Elbow Grease",
"Price": 99.95
},
{
"Name": "Headlight Fluid",
"Price": 4
}
]
}
]
}
有什么方法可以得到这样的输出吗?
发布于 2018-08-14 01:46:11
这里有两种方法可以做到这一点:你不能在提问时将它转换成你想要的JSON,但你可以按实际形式提取它,即在本例中是一个数组。如下所示:
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public class Program
{
public static JsonSerializer _serializer = new JsonSerializer();
public static void Main()
{
JObject o = JObject.Parse(@"{
'Stores': [
'Lambton Quay',
'Willis Street'
],
'Manufacturers': [
{
'Name': 'Acme Co',
'Products': [
{
'Name': 'Anvil',
'Price': 50
}
]
},
{
'Name': 'Contoso',
'Products': [
{
'Name': 'Elbow Grease',
'Price': 99.95
},
{
'Name': 'Headlight Fluid',
'Price': 4
}
]
}
]
}");
Console.WriteLine("1. Print the key Value");
Console.WriteLine(o["Manufacturers"].ToString());
Console.WriteLine("--------");
Console.WriteLine("2. Iterate and print by keyname - (Key - Value) ");
foreach(var m in o){
if(m.Key == "Manufacturers")
Console.WriteLine(m.ToString());
}
}
}
另一种选择是使用上面的示例提取字符串,然后将字符串添加到花括号之间
var json = "{" + extractedString + "}";
https://stackoverflow.com/questions/51826915
复制相似问题