web-dev-qa-db-ja.com

JSON内の文字列を逆シリアル化します

次の構造でJSONの応答を得ています。

[
    {
        "dateCreated": "07-22-2021",
        "comments": "Commenst",
        "url_list": "[{\"id\":1,\"name\":\"\",\"img\":\"https://legacynissan-ez360.imgix.net/1C3CDFEB6Gd555251/1C3CDFEB6Gd555251-2016-Dodge-Dart.sp_turntable_pic.1000.16x9-3840x2160-4K.20210721130782.jpg?w=300\",\"is_checked\":false,\"pois\":[]},{\"id\":2,\"name\":\"\",\"img\":\"https://legacynissan-ez360.imgix.net/1C3CDFEB6Gd555251/1C3CDFEB6Gd555251-2016-Dodge-Dart.sp_turntable_pic.1001.16x9-3840x2160-4K.20210721130782.jpg?w=300\",\"is_checked\":false,\"pois\":[]},{\"id\":3,\"name\":\"\",\"img\":\"https://legacynissan-ez360.imgix.net/1C3CDFEB6Gd555251/1C3CDFEB6Gd555251-2016-Dodge-Dart.sp_turntable_pic.1002.16x9-3840x2160-4K.20210721130782.jpg?w=300\",\"is_checked\":false,\"pois\":[]}]"

    } 
]
 _

そのように私はオブジェクトのリストを持っています(これにはDateCreated、コメント、およびurl_listが含まれています)問題は、url_listが文字列として保存されたオブジェクトのリストであり、その文字列をオブジェクトに逆シリアル化する方法はわかりません。

1)これは可能ですか? 2)どのようにして行うことができますか?

KTORクライアントとKotLinxのシリアライゼーションを使用しています。

1
barryalan2633

入ってくるデータをモデル化するために3つのオブジェクトを作成しました。

応答に関するデータは次のように構成されていました。

  1. オブジェクトのリスト
  2. これらのそれぞれのそれぞれに文字列に埋め込まれたオブジェクトのリスト
  3. これらのそれぞれには、オブジェクトの別のリストが含まれています。

私の3つのオブジェクトは私が今、私が今、私は今、私は今@Serializableですべてをマーキングするだけで逃げることができ、クラスが正しく行われ、kotlinが残りの世話をするでしょう。

この時期問題は、2番目のオブジェクトが文字列に埋め込まれていることです。

これを修正する方法はこれを使って解析することでした。

Json.decodeFromString<List<myObject>>(theStringIWantToParse)
 _

それは問題を修正し、私はすべてのデータを取得することができます、しかし、私はそれをすべて1つのデータ構造に持っていないでしょう、そして私は毎回手動で解釈する必要があるだろうから非常に不便です。

だから私はこれから情報とそれを結合しました この ビデオ

それは私が彼らを望んでいた別の3つのオブジェクトを作成します(私はそれらをエンティティでそれらを追加したものと呼びました)、そして応答が私にそれらを私に与える方法ではありません(私はDTOと追加します)。 )自分の3つのオブジェクト(エンティティ)に

ダウンサイド:

  1. その他のコード(3エンティティと3つのマッパークラス)

利点は次のとおりです。

  1. 私は迅速かつ簡単に応答構造を可能にするために適応させることができる明確なレイヤーを持っています。
  2. 私のコードベースにもう少し構造を提供しているので、ここでのランダムな解析よりも管理が簡単です。
0
barryalan2633