【发布时间】:2015-07-01 01:16:22
【问题描述】:
使用javax json ObjectBuilder构建json时,输出的json字符串在json字符串中包含“value”和“num”。当 json 包含“value”和“num”时,我的 Web 服务会引发序列化错误。有谁知道为什么输出有“value”和“num”?
示例:
JsonObject addProductRequest = Json.createObjectBuilder()
.add("OrderID", orderId)
.add("Product", productId)
.add("Quantity", qty)
.add("access_token", access_token)
.build();
输出:
{
"OrderID": {
"num": 15498
},
"ProductID": {
"num": 20
},
"Quantity": {
"num": 1
},
"access_token": {
"value": "1f6c689d-6956-4f8e-b259-9030d57bec4b"
}
}
当我切换到使用 google.gson.JsonObject 时,输出没有我的 Web 服务接受的“value”和“num”字符串,而且一切似乎都运行良好。 例子
com.google.gson.JsonObject addProductRequest = new com.google.gson.JsonObject();
addProductRequest.addProperty("OrderID", orderId);
addProductRequest.addProperty("Product", productId);
addProductRequest.addProperty("Quantity", qty);
addProductRequest.addProperty("access_token", access_token);
输出:
{ "OrderID": 15499, "Product": 20, "Quantity": 1, "access_token": "3241cfd4-7b6c-4eac-b2bb-9b2b0c780831"}
【问题讨论】:
-
你在序列化什么?向我们展示 POJO 并向我们展示代码。
-
已更新代码。没有 POCO,只是使用构建器。
-
你从哪里得到
String值?或者怎么输出addProductRequest? -
放心日志输出的结果字符串。
-
您必须检查放心记录它的方式。调用
addProductRequest.toString()会为我返回预期的 jsonString值,以及javax.json的 glassfish 1.0.4 实现。
标签: java json jsonobject