我有一个我要反序列化的匿名数组。这里的例子,所有对象都是一样的,我只编写了第一个。
[
{ "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对象给出的对象。 "结构"在我的例子中是指具有属性time, date, timestamp, level, message
和details
的对象的内部表。有问题:这个类没有正确处理reffrences:它使用classdescription来描述分配给fieldsymbol的字段。因为我不能有一个对象列表,但只有一个对象的依赖列表,通常没有问题。该解决方案既不起作用。
作为第三次尝试,我尝试使用Horst Keller所描述的 CALL TRANSFORMATION
,但是使用此方法我无法读取匿名数组。 (贾格尔评论了这个ABAP 2 JSON and JSON 2 ABAP with ST)
我的主要观点:
sap.ui.log
答案 0 :(得分:1)
你的问题不是来自数组的匿名性,而是来自SAP JSON(De)序列化程序的尴尬,它不包括双引号,它包含JSON属性。问题已经详尽描述in this answer
如果您不想动态更改JSON,则唯一的方法是更改CL_TREX_JSON_DESERIALIZER
课程like this。
答案 1 :(得分:1)
/UI5/CL_JSON_PARSER
解析格式未知的JSON。
请注意,它被多次“内部使用”,以至于您可能应该认真对待它并克隆其代码以对其进行修复。