首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用JSON path获取JSON字符串的片段而不是JToken?

如何使用JSON path获取JSON字符串的片段而不是JToken?
EN

Stack Overflow用户
提问于 2018-08-14 00:38:36
回答 1查看 433关注 0票数 1

我正在寻找最好的方法来获取JSON字符串的一部分,而不是使用SelectTokens(JPath)获取JTOken集合。

例如:

代码语言:javascript
复制
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的集合。

预期输出:

代码语言:javascript
复制
{
    "Manufacturers": [
        {
            "Name": "Acme Co",
            "Products": [
                {
                    "Name": "Anvil",
                    "Price": 50
                }
            ]
        },
        {
            "Name": "Contoso",
            "Products": [
                {
                    "Name": "Elbow Grease",
                    "Price": 99.95
                },
                {
                    "Name": "Headlight Fluid",
                    "Price": 4
                }
            ]
        }
    ]
}

有什么方法可以得到这样的输出吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-14 01:46:11

这里有两种方法可以做到这一点:你不能在提问时将它转换成你想要的JSON,但你可以按实际形式提取它,即在本例中是一个数组。如下所示:

Working Example in Fiddle

代码语言:javascript
复制
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());
            }


    }

}

另一种选择是使用上面的示例提取字符串,然后将字符串添加到花括号之间

代码语言:javascript
复制
var json = "{" + extractedString + "}"; 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51826915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档