反序列化匿名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一起使用,以下是的原因

然后我尝试了/UI2/CL_JSON,但它需要一个完全适合JSON对象给出的对象的"结构"。在我的情况下,"结构"是指具有属性time, date, timestamp, level, messagedetails的内部对象表。还有一个问题:它不能正确地处理引用,而是使用类描述来描述分配给字段符号的字段。由于我不能有一个对象列表,而只能有一个对对象的引用列表,所以该解决方案也不起作用。

作为第三次尝试,我尝试了霍斯特·凯勒所描述的CALL TRANSFORMATION,但使用这种方法,我无法在匿名数组中读取,以下是的原因

我的主要观点:

  • 我不想更改JSON,因为这是我从sap.ui.log得到的
  • 我更喜欢使用内置功能,而不是第三方框架

您的问题不是来自数组的匿名性,而是来自SAP JSON(De)序列化程序的笨拙,它不尊重包含JSON属性的双引号。这个问题在这个答案中有详尽的描述
如果您不想动态更改JSON,唯一的方法就是像这样更改CL_TREX_JSON_DESERIALIZER类。

/UI5/CL_JSON_PARSER解析未知格式的JSON。

注意,它上面写了很多次"内部使用",你可能应该认真对待它,并克隆它的代码来修复它

相关内容

  • 没有找到相关文章

最新更新