Sudheer Kumar Tiwari Ответов: 1

Как разобрать ответ лингвистического api с помощью C#


Я использую Microsoft Linguistic API
I have parsed a string Using
{
    "id": "22a6b758-420f-4745-8a3c-46835a67c0d2",
    "languages": [
      "en"
    ],
    "kind": "Constituency_Tree",
    "specification": "PennTreebank3",
    "implementation": "SplitMerge"
  },

and API response is 
{
    "analyzerId": "22a6b758-420f-4745-8a3c-46835a67c0d2",
    "result": [
      "(TOP (S (NP (PRP I)) (VP (VBP love) (NP (PRP$ my) (NNP India)))))"
    ]
  }

Now here i wants to generate a list of All NP or all VBP using C#.
There is any library  /  C# code available to achieve this list from this response.


Что я уже пробовал:

я не нашел ни одного подходящего примера или библиотеки в C# для этого разбора

1 Ответов

Рейтинг:
2

David_Wimbley

Таким образом, ваш формат ответа на данные выглядит как JSON. Простой поиск парсинга JSON в google показывает огромное количество результатов. Я не знаю, каковы ваши предпочтения с точки зрения библиотек, но я бы предложил использовать JSON.net/newtonsoft библиотека.

Использование JSON.net это легко, вы можете взять свой JSON-ответ, который вы пытаетесь прочитать, использовать веб-сайт json2csharp-генерация классов c# из json[^] и он будет генерировать несколько классов C# для использования для сериализации/десериализации вашего json.

Пример:

{
    "analyzerId": "22a6b758-420f-4745-8a3c-46835a67c0d2",
    "result": [
      "(TOP (S (NP (PRP I)) (VP (VBP love) (NP (PRP$ my) (NNP India)))))"
    ]
  }


Использование json2csharp генерирует класс

public class RootObject
{
    public string analyzerId { get; set; }
    public List<string> result { get; set; }
}


Оттуда с помощью JSON.net все, что вам нужно сделать, это сделать

var response = @"this is your json string here";


string json = @"{
    "analyzerId": "22a6b758-420f-4745-8a3c-46835a67c0d2",
    "result": [
      "(TOP (S (NP (PRP I)) (VP (VBP love) (NP (PRP$ my) (NNP India)))))"
    ]
  }";

RootObject myjson = JsonConvert.DeserializeObject<RootObject>(json);
string myresult = myjson.result;


Оттуда вы будете использовать split string или что-то еще, что вам нужно сделать, чтобы разобрать результирующую строку, чтобы получить значения из этой строки, которую вы ищете.

Связи:

Json.NET - Newtonsoft[^]

Гугл[^]