【问题标题】:Could I use JSON for communication between processes implemented in different programming languages?我可以使用 JSON 在以不同编程语言实现的进程之间进行通信吗?
【发布时间】:2023-03-17 21:00:01
【问题描述】:

我知道XML可以用来让不同编程语言的程序进行通信。
例如。带有CPython 客户端的Java 服务器。
JSON 可以用作替代品吗?我的意思是如果它可以应该我去吗?特别是在客户不受我控制的情况下。
你觉得实现这样的客户端XML 会更好吗?

【问题讨论】:

    标签: java c++ xml json language-agnostic


    【解决方案1】:

    是的,你可以。只需在两端使用适当的 Json 库(例如 C++ 端的 JsonCPP 或 C 端的 jansson)。并详细了解json-rpc

    JSON 相对于 XML 的最大优势在于它更简单(易于理解、实现、使用)并且可能不太冗长(因此消息更短)。

    您也可以考虑YAML,它似乎用得较少,但更“强大”。

    不要忘记很好地记录您的 JSON 协议(即消息)。

    【讨论】:

    • 可能是我的 OP 不清楚。如果可以,应该我这样做吗?我的意思是这是一个可行/好的选择,特别是如果客户不受我控制?
    • +1 最后一条评论。我通常不是对 XML 很感兴趣。我认为它在某种意义上被滥用了,即使数据中的层次结构不存在,它也会被使用
    • Protocol Buffers,因为几乎所有语言都支持它,导致序列化数据更小,您甚至不必编写一行代码来解析/序列化它。在它之上还有 RPC 实现。
    • 但为什么是RPC?不是使用Remote Procedure Call 样式“过时”吗?为什么不只是通用消息?
    【解决方案2】:

    根据您是否应该这样做的问题,我认为这是一个合适的用途。最后,您只需要对话双方都能处理的东西。您可以使用 XML 或其他替代方法,但从“您应该”的角度来看,我认为这并没有更好/更差。

    对不起,单独的答案。缺少代表发表评论...

    【讨论】:

      【解决方案3】:

      是的,您应该使用 JSON。

      几乎所有知名语言都有许多 JSON 库。与 XML 文件内容相同的 JSON 文件大约要小 75%。所以你应该使用它:D

      【讨论】:

        【解决方案4】:

        可以,但不应该。别误会,JSON 可以作为数据交换语言使用,但几乎任何语言的 XML 序列化包都比它成熟得多大多数 JSON 包。是的,XML 比 JSON 大,这是有充分理由的——它比 JSON 携带更多的描述性信息。而且,您的“端点”越多样化,这些信息就越有助于保持稳健的沟通。

        【讨论】:

        • 我理解你的意思。所以作为一个后续问题,如果我不需要这么多描述性信息,你仍然坚持你的建议吗?
        猜你喜欢
        • 1970-01-01
        • 2016-10-06
        • 1970-01-01
        • 1970-01-01
        • 2019-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多