【问题标题】:Deserialize an anonymous JSON array?反序列化匿名 JSON 数组?
【发布时间】: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, messagedetails属性的内部对象表。还有一个问题:它没有正确处理引用并使用类描述来描述分配给字段符号的字段。因为我不能有一个对象列表,而只有一个对象的引用列表,所以解决方案也不起作用。

作为第三次尝试,我尝试使用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 RESULT carriers = result.)一个命名的根节点(在本例中为carriers)我没有匿名数组。
  • “即时”更改 json 是否可以接受?我会将这个 json 读入一个字符串(假设它总是那么小),然后在开头粘上 "anonymous" : {,在结尾粘上 }。然后尝试将CALL TRANSFORMATION 用于您需要的任何内容,并在需要时将这些粘合的部分剥离到输出中。
  • @Jagger 它会变得很长。它是 ui5 应用程序的客户端日志(其中 2000 个?)。我宁愿不使用这样的黑客。这可能是一个解决方案。 parser 将是另一种方法

标签: json abap json-deserialization


【解决方案1】:

您的问题不是来自数组的匿名性,而是来自 SAP JSON (De)serializer 的笨拙,它不尊重包含 JSON 属性的双引号。该问题已详细描述in this answer
如果您不想即时更改 JSON,唯一的方法是更改​​ CL_TREX_JSON_DESERIALIZER class like this

【讨论】:

    【解决方案2】:

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

    请注意,上面写了很多次“供内部使用”,您可能应该认真对待它并克隆它的代码以修复它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2015-03-17
      相关资源
      最近更新 更多