2016-05-31 20 views
6

Serileştirmek istediğim bir anonim dizi var. Burada örnek, tüm nesneler aynı, ben sadece ilkini oluşturdum.Abap'ta anonim bir JSON dizisi nasıl deserialize edilir?

[ 
    { "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"} 
] 

Ben CL_TREX_JSON_SERIALIZER kullanarak deserializing çalıştı ama o şey bozuk ve

(look at this question) Sonra /ui2/CL_JSON çalıştı benim JSON ile çalışmaz. Bu şeyin JSON Nesnesi tarafından verilen Nesne tam olarak uyan bir "yapıya" ihtiyacı vardır. "Yapı", benim durumumda time, date, timestamp, level, message ve details Özniteliklerine sahip bir Nesnelerin İç Tablosunu ifade eder. Sorun vardı: Bu sınıf, uygunlukları düzgün bir şekilde ele almıyor: Alan sembolüne atanan alanı tanımlamak için sınıflandırma kullanıyor. Nesnelerin bir listesini yapamayacağım için, sadece Nesneler için genellikle bir sorun olmayan tekrarların listesi. Bu çözüm işe yaramıyor. Horst Keller göre tanımlanmış ise de, bu yöntemle Bir annonymous dizide okumak mümkün değildi gibi CALL TRANSFORMATION ile güvenilir üçüncü girişim olarak

. O ben almanın doğasında kullanmak prefere sap.ui.log
  • aldığım şeydir çünkü, ben JSON değiştirmek istemiyorum

  • +0

    Bunu denediniz mi? (Https://scn.sap.com/community/abap/blog/2013/04/15/abap-2-json-and-json-2-abap-with-st) ? – Jagger

    +0

    @Jagger Evet, ihtiyaç duyulan "Çağrı dönüşümü" ne dayanıyor (ÇAĞRI TRANSFORMASYON demo_st_json_table SOURCE XML json SONUÇ '** taşıyıcılar = sonuç.' **) adlı bir sözdizimi (bu durumda "taşıyıcılar" olarak adlandırılan bir kök düğümü)) Benim anonim dizi ile yok. – inetphantom

    +0

    Json "sinek üzerinde" bir değişiklik kabul edilebilir mi? Bu jsonu bir dizeye (her zaman o kadar küçük olduğu varsayılarak) okurdum ve daha sonra “anonim” i yapıştırırdım: {'başlangıçta ve'} 'sonunda. Ardından ihtiyaç duyduğunuz her şey için 'CALL TRANSFORMATION' kullanmayı deneyin ve bu yapıştırılmış parçaları gerektiğinde çıktıya çıkarın. – Jagger

    cevap

    0

    işlevselliği değil Senin sorunun dizinin gizli değil çıkar, ancak JSON niteliklerini içine çift tırnak, saygı duymayan, SAP JSON (de) serileştiriciden, beceriksizlik dan. Sorun ayrıntılı olarak in this answer olarak açıklanmıştır.
    JSON'unuzu anında değiştirmek istemiyorsanız, tek yapmanız gereken CL_TREX_JSON_DESERIALIZER sınıfını like this değiştirmektir.