【问题标题】:my C# client app need to deserialize complex JSON sent by Java app我的 C# 客户端应用程序需要反序列化 Java 应用程序发送的复杂 JSON
【发布时间】:2010-09-14 11:22:17
【问题描述】:

如果我的 C# 客户端应用需要从 Java 服务器应用反序列化复杂的 JSON,我有什么最佳选择?

这里有两个条件需要考虑: 1)速度是最重要的 2) Json 格式可以包含有关 Java 数据类型、C# 客户端应用程序的信息。需要识别它并将其转换为 C# corespondent 类型。例如,

...,"Variable1" : [ "java.math.BigDecimal", 0E-8 ],
  "Variable2" : [ "com.xmlasia.x5.refdata.instrument.model.MarginGroup"],...

IMO 因为第 2 点,唯一的方法是构建我自己的反序列化器,对吗?

关于第1点,如果我使用Json.net对Json进行反序列化,然后转换为arraylist,对速度有很大影响吗?还有其他更好的方法吗?

arraylist 方法的缺点是 extractJson 方法变得非常混乱,而且我认为 arraylist 很慢。

【问题讨论】:

    标签: c# java json


    【解决方案1】:

    我认为最简单的方法是建立一些桥梁,将这个 JSON 转换为更可互操作的东西。

    【讨论】:

      【解决方案2】:

      “速度是最重要的”不太可能,否则数据需要以二进制格式发送。但是所有主要的 json 解析器也很快,所以这不太可能成为问题。

      如果解析器只是忽略了 java 数据类型并根据名称将字段映射到 .net 对象中的字段,您可能会没事。否则,您需要一个 json 解析器,它会给您返回字段字典,以便您自己处理它们。 应该不需要自己编写字符串处理代码来解码json,这是一个已解决的问题。

      .net 的 json 库有很多,因为我看了很久,我不能推荐最好的。

      【讨论】:

      • stackoverflow.com/questions/391157/… 可能有助于使用 json 库
      • 我们无法选择传输格式。我们的职责是建立客户。但感谢您的评论。
      • 还有一件事,二进制是指以字节[]传输吗?然后在节点反序列化回 JSON?反序列化和序列化 byte[] 的成本会更高吗?再次假设客户端是 C#,另一端是 Java。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 2012-07-19
      • 2013-12-07
      • 2016-03-31
      • 1970-01-01
      相关资源
      最近更新 更多