【发布时间】:2010-01-20 06:21:52
【问题描述】:
这是一个奇怪的问题。我知道 JSON 应该是无序的,并且 java.lang.JSONObject 的实现特别提到它是无序的。
但是,这让我感到困惑,因为我会期待我调用 put(); 的方式。方法它应该保持我的订单。不过,这可能与我刚开始所说的相矛盾。
我正在使用 JSON 与 WCF Web 服务进行通信,这需要我包含一个 __type 键来指定我要发送的复杂对象的类型。
我强烈建议你试试这个:
JSONObject object = new JSONObject();
try {
object.put("__type", "Value1");
object.put("SecondKey", "Value2");
object.put("ThirdKey", "Value3");
}
catch (JSONException e) {
e.printStackTrace();
}
日志中的输出是: {"ThirdKey":"Value3","__type":"Value1","SecondKey":"Value2"}
现在,我了解该实现使用 HashMap,因此不维护顺序。但是在调用 WCF 服务时,首先需要键 __type 才能在服务上进行反序列化。我怎样才能做到这一点?一段时间以来,我一直在使用纯字符串发送到运行良好的网络服务。但是,这是不可接受的,因为它丑陋且难以维护。
请从 Java 端或 WCF 端建议我如何解决这个问题。
谢谢!
【问题讨论】: