2016-05-31 2 views
6

익명 어레이가 있습니다. 비 직렬화하고 싶습니다. 여기 예제, 모든 개체가 동일합니다, 나는 단지 첫 번째 formated.abap에서 익명 JSON 배열을 deserialize하는 방법은 무엇입니까?

[ 
    { "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를 사용하여 직렬화 복원 시도했지만 그 일이 손상되어

(look at this question)가 그럼 난 /UI2/CL_JSON을 시도 내 JSON 작동하지 않습니다. 이 것은 JSON 객체에 의해 주어진 Object에 완벽하게 맞는 "구조체"가 필요합니다. "구조"는 내 경우에는 속성이 time, date, timestamp, level, messagedetails 인 내부 테이블을 의미합니다. 문제가 발생했습니다 :이 클래스는 reffrences를 적절히 처리하지 못합니다 : 필드 기호에 지정된 필드를 설명하기 위해 클래스 설명을 사용합니다. 객체 목록 만 가질 수는 없으므로 객체에 대한 reffrences 목록 만있을 수 있으므로 일반적으로 문제는 없습니다. 그 해결책은 효과가 없습니다. Horst Keller하여 설명하지만,이 방법은 I annonymous 어레이에서 판독 할 수 없었던 것처럼 I은 CALL TRANSFORMATION로하려고 시도로 제

. 즉 내가 내장 사용하는 prefere sap.ui.log
  • 에서 무엇을 얻을이기 때문에, 내가 JSON을 변경하지 않으

  • +0

    [이] (https://scn.sap.com/community/abap/blog/2013/04/15/abap-2-json-and-json-2-abap-with-st)를 사용해 보셨나요? ? – Jagger

    +0

    @Jagger 그렇습니다. '전화 변환'을 기반으로합니다. ('CALL TRANSFORMATION demo_st_json_table SOURCE XML json RESULT' **'carriers = result.' **) 루트 노드 (이 경우에는'carrier ') 내 익명의 배열을 가지고 있지 않습니다. – inetphantom

    +0

    json의 변경이 "즉시 수행"가능합니까? 이 json을 문자열 (항상 작다고 가정)로 읽은 다음 끝에 익명으로 붙여 넣습니다. 즉, 처음에는 {'시작 부분에'}'를 붙입니다. 그런 다음 필요하다면'CALL TRANSFORMATION'을 사용하고 필요한 경우 출력에이 접착 부분을 제거하십시오. – Jagger

    답변

    0

    기능과하지 귀하의 문제는 배열의 익명 성에서하지 나오고 있지만, JSON 속성을 묶으 따옴표를 존중하지 않는 SAP JSON (비) 직렬의 어색함에서. 문제는 철저히 in this answer으로 설명됩니다.
    JSON을 직접 변경하지 않으려는 경우 클래스 like this을 변경해야합니다.

    관련 문제