クエリに応じて異なるプロパティ名でJson文字列を変換します

トクフラン

私は次のようなJsonの文字列を持っています:

    {"Linkin Park":{"mbid_id":"f59c5520-5f46-4d2c-b2c4-822eabf53419","artistbackground":
[{"id":"34862","url":
"http://assets.fanart.tv/fanart/music/f59c5520-5f46-4d2c-b2c4-822eabf53419/artistbackground/linkin-park-4fcd2d8e4764f.jpg",
"likes":"4"},{"id":"3953","url":
"http://assets.fanart.tv/fanart/music/f59c5520-5f46-4d2c-b2c4-822eabf53419/artistbackground/linkin-park-4de522dac2c13.jpg","likes":"1"},{"id":"3954","url":
"http://assets.fanart.tv/fanart/music/f59c5520-5f46-4d2c-b2c4-822eabf53419/artistbackground/linkin-park-4de523586c57e.jpg","likes":"1"},{"id":"4251","url":"http://assets.fanart.tv/fanart/music/f59c5520-5f46-4d2c-b2c4-822eabf53419/artistbackground/linkin-park-4dea53983f4cf.jpg","likes":"1"},{"id":"30196","url":
"http://assets.fanart.tv/fanart/music/f59c5520-5f46-4d2c-b2c4-822eabf53419/artistbackground/linkin-park-4fabb53ba80a3.jpg","likes":"1"},{"id":"52251","url":
"http://assets.fanart.tv/fanart/music/f59c5520-5f46-4d2c-b2c4-822eabf53419/artistbackground/linkin-park-5058a071d9782.jpg","likes":"1"},{"id":"52252","url":"http://assets.fanart.tv/fanart/music/f59c5520-5f46-4d2c-b2c4-822eabf53419/artistbackground/linkin-park-5058a071d9f41.jpg","likes":"1"},{"id":"52254","url":
"http://assets.fanart.tv/fanart/music/f59c5520-5f46-4d2c-b2c4-822eabf53419/artistbackground/linkin-park-5058a0ebd0350.jpg","likes":"1"},{"id":"52255","url":"http://assets.fanart.tv/fanart/music/f59c5520-5f46-4d2c-b2c4-822eabf53419/artistbackground/linkin-park-5058a0ebd098b.jpg","likes":"1"},{"id":"63902","url":
"http://assets.fanart.tv/fanart/music/f59c5520-5f46-4d2c-b2c4-822eabf53419/artistbackground/linkin-park-50c2f127eeae6.jpg","likes":"1"},{"id":"3951","url":"http://assets.fanart.tv/fanart/music/f59c5520-5f46-4d2c-b2c4-822eabf53419/artistbackground/linkin-park-4de521f409aa2.jpg","likes":"0"},{"id":"3952","url":
"http://assets.fanart.tv/fanart/music/f59c5520-5f46-4d2c-b2c4-822eabf53419/artistbackground/linkin-park-4de5225cdd595.jpg","likes":"0"},
{"id":"28038","url":"http://assets.fanart.tv/fanart/music/f59c5520-5f46-4d2c-b2c4-822eabf53419/artistbackground/linkin-park-4f8ecbd3c004d.jpg","likes":"0"},{"id":"88261","url":"http://assets.fanart.tv/fanart/music/f59c5520-5f46-4d2c-b2c4-822eabf53419/artistbackground/linkin-park-51d1d122f3029.jpg","likes":"0"}]}}

そのすべてを読む時間があれば、私の問題が発生する可能性があります。送信するクエリに応じて名前が変わるJsonノードがあります。今回は「リンキンパーク」を送って、リンキンパークというノードをもらいました。その後、マドンナのクエリを送信すると、マドンナと呼ばれるノードになります。

これをクラスに逆シリアル化するにはどうすればよいですか?

アミール・アビリ

いくつかのオプションがあります。

  1. 辞書
  2. 動的
  3. JObjectを実行し、強く型付けされた1つのノードに逆シリアル化します(サブツリーの構造と名前が静的であると想定)(これはNewtonsoft.JSONに基づいています)

JSON逆シリアル化にどのライブラリを使用していますか?

Json.NETを使用した#1の例:

var json = JsonConvert.DeserializeObject<Dictionary<string, StronglyTyped>>(jsonStr);
var data = json.Values.FirstOrDefault();

Json.NETを使用した#3の例:

var json    = JsonConvert.DeserializeObject<JObject>(jsonStr);
var topProp = json.Properties().FirstOrDefault().Name;
var data    = json[topProp].ToObject<StronglyTyped>();

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Kotlin:@JsonViewに応じてjsonプロパティ名を変更します

分類Dev

Springはリクエストパラメータに応じて異なるプロパティファイルを使用します

分類Dev

JacksonのAPIバージョンに応じて異なるJSONプロパティ名を指定する

分類Dev

プロパティ名なしでJSONを変換する

分類Dev

Servicestackのクエリ文字列パラメータ値に応じて異なるResponseDTOで戻りますか?

分類Dev

getProperties()は、ドクトリンfind($ id)に送信された$ idに応じて、異なるプロパティを返します。

分類Dev

反応のjsonプロパティの値のみを使用してjson配列を文字列配列に変換します

分類Dev

提供された環境プロパティに応じて異なるBeanを注入します

分類Dev

提供された環境プロパティに応じて異なるBeanを注入します

分類Dev

CSS同じクラス名を選択し、異なるプロパティを割り当てます

分類Dev

バックエンドにPOSTリクエストを送信して本文にアクセスしようとすると、配列を含むすべてのプロパティが文字列に変換されます

分類Dev

Javascript:オブジェクトの配列をプロパティ値に応じて動的な名前を持つ個別の配列に分割します

分類Dev

同じ名前のXML要素を同じ名前のJSONプロパティに変換します

分類Dev

同じ名前で属性が異なる2つのプロパティをシリアル化します

分類Dev

異なるjsonプロパティを条件付きで同じモデルプロパティに逆シリアル化します

分類Dev

文字列の配列をJSONプロパティのオブジェクトの配列に変換します

分類Dev

neo4j:同じ文字列に対して複数のプロパティをクエリするにはどうすればよいですか?

分類Dev

jqueryはJSONプロパティを文字列に変換します

分類Dev

JSONオブジェクトを逆シリアル化するときにプロパティ名を小文字に変換する方法はありますか?

分類Dev

PowerShellは、ConvertTo-Jsonを使用するときに、日付プロパティを文字列に変換します

分類Dev

動的プロパティ名を使用してデータをjson文字列にシリアル化します

分類Dev

AJAXリクエストは、文字列全体ではなくプロパティを1つの値としてJSONを返します

分類Dev

ジャクソンを使用してjavaオブジェクトをjson文字列に変換すると、jsonプロパティが重複する

分類Dev

ネストされたjsonを異なるプロパティ名で逆シリアル化します

分類Dev

Javaオブジェクトをエイリアスプロパティを使用してJsonリクエストに変換します

分類Dev

名前に文字列が含まれているJsonプロパティを取得します

分類Dev

ユーザーの選択に応じて、アクティビティに異なる文字列を渡します

分類Dev

同じディレクトリ内の異なるファイルに応じて、特定のファイルの名前を変更します

分類Dev

2つの配列を比較し、それに応じてプロパティを変更します

Related 関連記事

  1. 1

    Kotlin:@JsonViewに応じてjsonプロパティ名を変更します

  2. 2

    Springはリクエストパラメータに応じて異なるプロパティファイルを使用します

  3. 3

    JacksonのAPIバージョンに応じて異なるJSONプロパティ名を指定する

  4. 4

    プロパティ名なしでJSONを変換する

  5. 5

    Servicestackのクエリ文字列パラメータ値に応じて異なるResponseDTOで戻りますか?

  6. 6

    getProperties()は、ドクトリンfind($ id)に送信された$ idに応じて、異なるプロパティを返します。

  7. 7

    反応のjsonプロパティの値のみを使用してjson配列を文字列配列に変換します

  8. 8

    提供された環境プロパティに応じて異なるBeanを注入します

  9. 9

    提供された環境プロパティに応じて異なるBeanを注入します

  10. 10

    CSS同じクラス名を選択し、異なるプロパティを割り当てます

  11. 11

    バックエンドにPOSTリクエストを送信して本文にアクセスしようとすると、配列を含むすべてのプロパティが文字列に変換されます

  12. 12

    Javascript:オブジェクトの配列をプロパティ値に応じて動的な名前を持つ個別の配列に分割します

  13. 13

    同じ名前のXML要素を同じ名前のJSONプロパティに変換します

  14. 14

    同じ名前で属性が異なる2つのプロパティをシリアル化します

  15. 15

    異なるjsonプロパティを条件付きで同じモデルプロパティに逆シリアル化します

  16. 16

    文字列の配列をJSONプロパティのオブジェクトの配列に変換します

  17. 17

    neo4j:同じ文字列に対して複数のプロパティをクエリするにはどうすればよいですか?

  18. 18

    jqueryはJSONプロパティを文字列に変換します

  19. 19

    JSONオブジェクトを逆シリアル化するときにプロパティ名を小文字に変換する方法はありますか?

  20. 20

    PowerShellは、ConvertTo-Jsonを使用するときに、日付プロパティを文字列に変換します

  21. 21

    動的プロパティ名を使用してデータをjson文字列にシリアル化します

  22. 22

    AJAXリクエストは、文字列全体ではなくプロパティを1つの値としてJSONを返します

  23. 23

    ジャクソンを使用してjavaオブジェクトをjson文字列に変換すると、jsonプロパティが重複する

  24. 24

    ネストされたjsonを異なるプロパティ名で逆シリアル化します

  25. 25

    Javaオブジェクトをエイリアスプロパティを使用してJsonリクエストに変換します

  26. 26

    名前に文字列が含まれているJsonプロパティを取得します

  27. 27

    ユーザーの選択に応じて、アクティビティに異なる文字列を渡します

  28. 28

    同じディレクトリ内の異なるファイルに応じて、特定のファイルの名前を変更します

  29. 29

    2つの配列を比較し、それに応じてプロパティを変更します

ホットタグ

アーカイブ