C#でネストされたJSON値を取得するにはどうすればよいですか?

わからない

次のJSon文字列がサービスから返されました。

{
    "links": {
        "data": {
            "self": {
                "body": "",
                "content_type": "",
                "href": "",
                "method": "GET",
                "name": ""
            }
        }
    },
    "results": [{
        "data": {
            "categories": {
                "41370_10": "abc",
                "41370_11": "abc",
                "41370_2": "abc",
                "41370_5": "abc"
            }
        },
        "metadata": {
            "categories": {
                "41370": {
                    "key": "41370",
                    "name": "123"
                },
                "41370_10": {
                    "bulk_shared": false,
                    "key": "41370_10",
                    "name": "some name"
                },
                "41370_11": {
                    "allow_undefined": false,
                    "key": "41370_11",
                    "name": "some name 2"
                },
                "41370_2": {
                    "key": "41370_2",
                    "key_value_pairs": false,
                    "name": "some name 3"
                }
            }
        }
    },
    {
        "data": {
            "categories": {
                "72051_2": "asd",
                "72051_3": "asd"
            }
        },
        "metadata": {
            "categories": {
                "72051": {
                    "key": "72051",
                    "name": "some name 4"
                },
                "72051_2": {
                    "key": "72051_2",
                    "name": "some name 5"
                }
            }
        }
    },
    {
        "data": {
            "categories": {
                "112644_2": "zxc"
            }
        },
        "metadata": {
            "categories": {
                "112644": {
                    "key": "112644",
                    "name": "some name 6"
                },
                "112644_2": {
                    "hidden": false,
                    "key": "112644_2",
                    "name": "some name 7"
                }
            }
        }
    }]
}

このデータを処理して、わかりやすい辞書を取得するにはどうすればよいですか?次のようになります。

{"some name", "abc"}, 
{"some name 2", "abc"}, 
{"some name 3", "abc"},
{"some name 5", "asd"},
{"some name 6", "zxc"}

現在、c#、json.netを使用しようとしていますが、ほとんど成功していません。どんな助けでも大歓迎です。

更新1:JTokenを取得するところまでは到達しましたが、データをメタデータから分離する方法がわかりません(はい、それがいかに馬鹿げているかわかります)。

//get json object
JObject cjob = JObject.Parse(response.Content.ReadAsStringAsync().Result);

IEnumerable<JToken> categorymetadata = cjob.Descendants()
    .Where(t => t.Type == JTokenType.Property && ((JProperty)t).Name == "categories")
    .SelectMany(p => ((JProperty)p).Value);
ブライアンロジャース

次のLINQ-to-JSONクエリは、探している結果を提供するはずです。

Dictionary<string, string> dict = cjob["results"]
    .Children<JObject>()
    .Select(result => result.SelectToken("metadata.categories").Children<JProperty>()
                            .Join(result.SelectToken("data.categories").Children<JProperty>(),
                                  metaCat => metaCat.Name,
                                  dataCat => dataCat.Name,
                                  (metaCat, dataCat) => new
                                  {
                                      Name = (string)metaCat.Value["name"],
                                      Value = (string)dataCat.Value
                                  }
                            )
    )
    .SelectMany(a => a)
    .ToDictionary(a => a.Name, a => a.Value);

foreach (var kvp in dict)
{
    Console.WriteLine(kvp.Key + ": " + kvp.Value);
}

これにより、各結果metadatadataオブジェクト内のカテゴリとオブジェクト内のカテゴリの間で内部結合が行われ、結合されたプロパティが匿名の名前と値のペアのリスト(実際にはIEnumerable)に選択されます。次に、ペアのリストは1つのリストにフラット化され、最終的に辞書に配置されます。

私はあなたのデータについて以下の仮定をしています:

  • 各結果オブジェクトには、常にメタデータとデータの両方が含まれます
  • カテゴリ名とデータ値は常に文字列になります
  • カテゴリ名はすべての結果で一意になります

これらの仮定が成り立たない場合は、エラーが発生し、コードを調整する必要があります。

これが実際のデモです:https//dotnetfiddle.net/WkztV5

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ネストされた配列から値を取得するにはどうすればよいですか?JSON

分類Dev

ネストされた定数の値をangularjsで取得するにはどうすればよいですか?

分類Dev

ネストされた値を検索して、JSON応答からIPv4アドレスを取得するにはどうすればよいですか?

分類Dev

JSON.NETJObject-このネストされたJSON構造から値を取得するにはどうすればよいですか

分類Dev

jqueryを使用してネストされたJSONオブジェクトから値を取得するにはどうすればよいですか?

分類Dev

AngularJSテンプレートのネストされたJSON配列から値を取得するにはどうすればよいですか?

分類Dev

IonicでネストされたJSON配列の値を取得するにはどうすればよいですか?

分類Dev

辞書を使用してPythonからネストされたJSON値を取得するにはどうすればよいですか?

分類Dev

ネストされたdict形式で値をソートするにはどうすればよいですか?

分類Dev

任意にネストされた値をjqで合計するにはどうすればよいですか?

分類Dev

ネストされたJSON応答から特定の値を取得するにはどうすればよいですか?

分類Dev

DOMDocumentで親要素とネストされた要素を取得するにはどうすればよいですか?

分類Dev

完全修飾名でネストされた型を取得するにはどうすればよいですか?

分類Dev

C#でネストされたJsonキーを効率的に抽出するにはどうすればよいですか?

分類Dev

Perl:キーでソートされたネストされたハッシュの値を取得するにはどうすればよいですか?

分類Dev

ネストされたNSMutableDictionaryからnumberOfRowsInSectionを取得するにはどうすればよいですか?

分類Dev

JSONAngularJSからネストされたデータを取得するにはどうすればよいですか

分類Dev

ネストされた(親子)JSON応答をC#で作成するにはどうすればよいですか?

分類Dev

ネストされたJSONキー値を取得して変数に割り当てるにはどうすればよいですか?

分類Dev

RestController でネストされた JSON をマップするにはどうすればよいですか?

分類Dev

このネストされたJSON形式をRで操作するにはどうすればよいですか?

分類Dev

ネストされた出力をC ++で右揃えにするにはどうすればよいですか?

分類Dev

Newtonsoft.Json(C#)からネストされたJSONオブジェクトにアクセスするにはどうすればよいですか?

分類Dev

ネストされたjsonをdatafrmaeに変換するにはどうすればよいですか?

分類Dev

mongodb ネストされた配列の値を更新するにはどうすればよいですか?

分類Dev

ネストされた配列の値を更新するにはどうすればよいですか?

分類Dev

C#-FormUrlEncodedContentを使用してJSON本文のネストされた値を更新するにはどうすればよいですか?

分類Dev

マングースでネストされたオブジェクトから値を取得するにはどうすればよいですか?

分類Dev

ネストされた配列JSONを作成するにはどうすればよいですか?

Related 関連記事

  1. 1

    ネストされた配列から値を取得するにはどうすればよいですか?JSON

  2. 2

    ネストされた定数の値をangularjsで取得するにはどうすればよいですか?

  3. 3

    ネストされた値を検索して、JSON応答からIPv4アドレスを取得するにはどうすればよいですか?

  4. 4

    JSON.NETJObject-このネストされたJSON構造から値を取得するにはどうすればよいですか

  5. 5

    jqueryを使用してネストされたJSONオブジェクトから値を取得するにはどうすればよいですか?

  6. 6

    AngularJSテンプレートのネストされたJSON配列から値を取得するにはどうすればよいですか?

  7. 7

    IonicでネストされたJSON配列の値を取得するにはどうすればよいですか?

  8. 8

    辞書を使用してPythonからネストされたJSON値を取得するにはどうすればよいですか?

  9. 9

    ネストされたdict形式で値をソートするにはどうすればよいですか?

  10. 10

    任意にネストされた値をjqで合計するにはどうすればよいですか?

  11. 11

    ネストされたJSON応答から特定の値を取得するにはどうすればよいですか?

  12. 12

    DOMDocumentで親要素とネストされた要素を取得するにはどうすればよいですか?

  13. 13

    完全修飾名でネストされた型を取得するにはどうすればよいですか?

  14. 14

    C#でネストされたJsonキーを効率的に抽出するにはどうすればよいですか?

  15. 15

    Perl:キーでソートされたネストされたハッシュの値を取得するにはどうすればよいですか?

  16. 16

    ネストされたNSMutableDictionaryからnumberOfRowsInSectionを取得するにはどうすればよいですか?

  17. 17

    JSONAngularJSからネストされたデータを取得するにはどうすればよいですか

  18. 18

    ネストされた(親子)JSON応答をC#で作成するにはどうすればよいですか?

  19. 19

    ネストされたJSONキー値を取得して変数に割り当てるにはどうすればよいですか?

  20. 20

    RestController でネストされた JSON をマップするにはどうすればよいですか?

  21. 21

    このネストされたJSON形式をRで操作するにはどうすればよいですか?

  22. 22

    ネストされた出力をC ++で右揃えにするにはどうすればよいですか?

  23. 23

    Newtonsoft.Json(C#)からネストされたJSONオブジェクトにアクセスするにはどうすればよいですか?

  24. 24

    ネストされたjsonをdatafrmaeに変換するにはどうすればよいですか?

  25. 25

    mongodb ネストされた配列の値を更新するにはどうすればよいですか?

  26. 26

    ネストされた配列の値を更新するにはどうすればよいですか?

  27. 27

    C#-FormUrlEncodedContentを使用してJSON本文のネストされた値を更新するにはどうすればよいですか?

  28. 28

    マングースでネストされたオブジェクトから値を取得するにはどうすればよいですか?

  29. 29

    ネストされた配列JSONを作成するにはどうすればよいですか?

ホットタグ

アーカイブ