我正在寻找最好的方法来获取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 }
有什么方法可以得到这样的输出吗?
上云精选
2核2G云服务器 每月9.33元起,个人开发者专属3年机 低至2.3折
这里有两种方法可以做到这一点:你不能在提问时将它转换成你想要的JSON,但你可以按实际形式提取它,即在本例中是一个数组。如下所示:
Working Example in Fiddle
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());