JSON 是一种用于表示和交换数据的标准格式。它没有定义Wrapped或Bare术语。我不熟悉 C# 及其将数据编码为 JSON 的库,但是我可以根据您提供的示例进行猜测。
如果您可以控制 C# 应用程序,请将其编码为仅使用Bare。一般来说,我认为Wrapped样式没有优势。也许它是专门为其他一些 C# 客户端库设计的。
我在生成的输出中看到的唯一区别是数据的结构。没有办法绝对确定,但是从这两个示例中,您可以简单地查看反序列化的对象并检查它是否具有属性Echo
。如果是,则使用该属性的值,如果不是,则按原样使用该对象。
由于我已经有十多年没有使用 C++ 工作了,而且我不知道您使用的 JSON 库,所以我将在 JavaScript 中给出一个示例(尽管使用的样式可能更接近 C++)。以下是如何处理这两个对象:
var data = JSON.parse(...); // the '...' represents where ever you get the text
if (data["Echo"] !== undefined)
{ data = data["Echo"]; }
console.log("The first name is:", data["firstname"]);
这是一个几乎是有效 Java 的伪代码示例,可能更容易识别并翻译成 C++:
Map<String, Object> data = JSON.parse(...); // the '...' represents where ever you get the text
if (data.containsKey("Echo"))
{ data = (Map)data.get("Echo"); }
System.out.println("The first name is: " + data.get("firstname"));