2016-05-31 10 views
6

私は無名配列を取得しました。逆シリアル化したいです。ここの例では、すべてのオブジェクトは同じですが、私は最初のオブジェクトのみを作成しました。abapで匿名JSON配列を逆シリアル化する方法は?

[ 
    { "time":"08:55:54", 
    "date":"2016-05-27", 
    "timestamp":1464332154807, 
    "level":3, 
    "message":"registerResourcePath ('', '/sap/bc/ui5_ui5/ui2/ushell/resources/')", 
    "details":"","component":"sap.ui.ModuleSystem"}, 
    {"time":"08:55:54","date":"2016-05-27","timestamp":1464332154808,"level":3,"message":"URL prefixes set to:","details":"","component":"sap.ui.ModuleSystem"}, 
    {"time":"08:55:54","date":"2016-05-27","timestamp":1464332154808,"level":3,"message":" (default) : /sap/bc/ui5_ui5/ui2/ushell/resources/","details":"","component":"sap.ui.ModuleSystem"} 
] 

私はCL_TREX_JSON_SERIALIZERを使用してデシリアライズを試みたが、その事が破損していると私のJSON (look at this question)

では動作しません。そして私は、/UI2/CL_JSONを試してみました。このことは、JSONオブジェクトによって与えられたObjectに完全に適合する「構造」を必要とします。私の場合、「構造」とは、属性がtime, date, timestamp, level, messageおよびdetailsのオブジェクトの内部テーブルを意味します。問題がありました:このクラスはreffrencesを適切に処理しません:クラス記述を使用してfieldsymbolに割り当てられたフィールドを記述します。私はオブジェクトのリストを持つことはできませんが、オブジェクトへのreffrencesのリストしか持てないので、通常問題はありません。その解決法はどちらも機能しません。 Horst Kellerによって記載されているように、私はCALL TRANSFORMATIONと試みたが、この方法で私はAnnonymousの配列に読み取ることができませんでした第三の試みとして

。それは私が私が内蔵使用するprefere sap.ui.log

  • から得るものであるから、私はJSONを変更したくない

    • 私の主要なポイント(ジャガーはこのABAP 2 JSON and JSON 2 ABAP with STのよりよいリンクコメント)サードパーティ製のフレームワーク

  • +0

    あなたは[これ](https://scn.sap.com/community/abap/blog/2013/04/15/abap-2-json-and-json-2-abap-with-st)を試しましたか? ? – Jagger

    +0

    @Jaggerはい、それは必要な(呼び出し変換demo_st_json_table SOURCE XML json RESULT' ** 'carrier = result.' **)という名前のルート変換ノードに基づいています。 )私は無名の配列を持っていません。 – inetphantom

    +0

    "オンザフライ"のjsonの変更は容認できますか?私はこのjsonを文字列に読み込み、最後に ''匿名 ':{'を先頭に' 'と' 'を付けます。次に、必要に応じて 'CALL TRANSFORMATION'を使い、必要に応じてこの接着された部分を出力に取り除いてみてください。 – Jagger

    答えて

    0

    機能ではなくあなたの問題は、アレイの匿名性からではなく出てくるが、JSON属性を囲む二重引用符を尊重していないSAP JSON(デ)シリアライザのぎこちなさから。問題は完全にin this answerと記載されています。
    オンザフライでJSONを変更したくない場合は、クラスlike thisを変更するしかありません。

    関連する問題