【发布时间】:2016-05-31 08:20:07
【问题描述】:
我有一个想要反序列化的匿名数组,这里是第一个数组对象的例子
[
{ "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 here is why
然后我尝试了/UI2/CL_JSON,但它需要一个完全适合 JSON 对象给出的对象的“结构”。 “结构”在我的例子中是指具有time, date, timestamp, level, message和details属性的内部对象表。还有一个问题:它没有正确处理引用并使用类描述来描述分配给字段符号的字段。因为我不能有一个对象列表,而只有一个对象的引用列表,所以解决方案也不起作用。
作为第三次尝试,我尝试使用Horst Keller 描述的CALL TRANSFORMATION,但使用这种方法我无法读取匿名数组and here is why
我的主要观点:
- 我不想更改 JSON,因为这是我从
sap.ui.log得到的 - 我更喜欢使用内置功能而不是第三方框架
【问题讨论】:
-
你试过this吗?
-
@Jagger 是的,它基于
Call transformation,它需要(通过语法CALL TRANSFORMATION demo_st_json_table SOURCE XML json RESULTcarriers = result.)一个命名的根节点(在本例中为carriers)我没有匿名数组。 -
“即时”更改 json 是否可以接受?我会将这个 json 读入一个字符串(假设它总是那么小),然后在开头粘上
"anonymous" : {,在结尾粘上}。然后尝试将CALL TRANSFORMATION用于您需要的任何内容,并在需要时将这些粘合的部分剥离到输出中。 -
@Jagger 它会变得很长。它是 ui5 应用程序的客户端日志(其中 2000 个?)。我宁愿不使用这样的黑客。这可能是一个解决方案。 parser 将是另一种方法
标签: json abap json-deserialization