反序列化匿名JSON数组?

问题描述 投票:9回答:2

我有一个要反序列化的匿名数组,这里是第一个数组对象的示例

[
  { "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 Object给定的对象。在我的情况下,“结构”表示具有属性time, date, timestamp, level, messagedetails的内部对象表。出现了问题:它不能正确处理引用,并使用类描述来描述分配给字段符号的字段。由于我没有对象列表,而只有对象的引用列表,因此该解决方案也不起作用。

作为第三次尝试,我按照CALL TRANSFORMATION的描述尝试了Horst Keller,但是使用这种方法,我无法在匿名数组and here is why中读取

我的主要观点:

  • 我不想更改JSON,因为这是我从sap.ui.log中获得的信息>
  • 我更喜欢使用内置功能,而不是第三方框架
  • 我有一个要反序列化的匿名数组,这里是第一个数组对象的示例[{“ time”:“ 08:55:54”,“ date”:“ 2016-05-27”,“ timestamp” :1464332154807,“级别”:3,“ ...

arrays sap abap json-deserialization
2个回答
1
投票

您的问题不是来自数组的匿名性,而是来自SAP JSON(De)serializer的尴尬,后者不考虑双引号,双引号将JSON属性括起来。对该问题进行了详细描述in this answer。如果您不想即时更改JSON,则唯一的方法就是更改CL_TREX_JSON_DESERIALIZERlike this


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.