我得到了一个要反序列化的匿名数组,这里是第一个数组对象的例子
[
{ "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一起使用,以下是的原因
然后我尝试了/UI2/CL_JSON
,但它需要一个完全适合JSON对象给出的对象的"结构"。在我的情况下,"结构"是指具有属性time, date, timestamp, level, message
和details
的内部对象表。还有一个问题:它不能正确地处理引用,而是使用类描述来描述分配给字段符号的字段。由于我不能有一个对象列表,而只能有一个对对象的引用列表,所以该解决方案也不起作用。
作为第三次尝试,我尝试了霍斯特·凯勒所描述的CALL TRANSFORMATION
,但使用这种方法,我无法在匿名数组中读取,以下是的原因
我的主要观点:
- 我不想更改JSON,因为这是我从
sap.ui.log
得到的 - 我更喜欢使用内置功能,而不是第三方框架
您的问题不是来自数组的匿名性,而是来自SAP JSON(De)序列化程序的笨拙,它不尊重包含JSON属性的双引号。这个问题在这个答案中有详尽的描述
如果您不想动态更改JSON,唯一的方法就是像这样更改CL_TREX_JSON_DESERIALIZER
类。
/UI5/CL_JSON_PARSER
解析未知格式的JSON。
注意,它上面写了很多次"内部使用",你可能应该认真对待它,并克隆它的代码来修复它