2016-11-16 7 views
2

дает JSONполучить ключи и значения в виде строки

{ "id": 1, "name": "one" } 

Я хотел бы, чтобы произвести две строки:

  • один с ключами, как:

    "id", "name"

  • и один со значениями

    1, "one"

Кажется тривиальным, но до сих пор я даже не знаю, с чего начать. Должен ли я разобрать его с помощью JSON-анализатора на JSONValue, а затем получить ключи? Является ли это осязаемым, давая динамический характер JSON, который можно дать? Или просто возьмите маршрут REGEX? Любые другие идеи?

+1

Поставщик типа JSON довольно хорош, если ваш документ имеет стандартную структуру. –

+1

. Парсер JSON всегда рекомендуется перед регулярным выражением, потому что он более гибкий, чем регулярное выражение. – AlphaQ

+0

Проблема в том, что я не уверен, как получить эти две строки после их анализа. –

ответ

4

Если вы хотите разобрать JSON на .NET, в городе действительно есть одно решение - Newtonsoft JSON.NET.

Я предполагаю, что вы хотите разбирать документы JSON, где вы заранее не знаете схему. JSON.NET имеет объектную модель, которая может использоваться для представления документа в памяти, и вы можете проверить это, чтобы получить нужный результат.

Вот пример, который должен заставить вас идти:

open Newtonsoft.Json 
open Newtonsoft.Json.Linq 

let json = "{ \"id\": 1, \"name\": \"one\" }" 

let rep = JObject.Parse(json) 

let names, values = 
    [ for p in rep.Properties() do 
     yield p.Name, p.Value.ToObject<string>() ] 
    |> List.unzip 

Очевидно, что образец обрабатывает только плоские документы, но она должна быть достаточно простой, чтобы сделать его рекурсивным.

Если вы знаете схему, вы можете использовать поставщика типа или использовать JSON.NET для десериализации документа JSON straight into a record type.

+0

удивительный, именно то, что я искал. Большое спасибо @scrwtp –