【问题标题】:json from java missing square brackets来自java的json缺少方括号
【发布时间】:2026-02-22 18:55:01
【问题描述】:

我正在使用来自 jackson 的 ObjectMapper 创建 JSON。在调试器中查看之前,我能够看到 '[' 丢失了,并且在生成的 json 字符串(以下函数中的字符串 json 变量)之后丢失了 ']'。所以作为一种解决方法,我输入了

String str = "["+json+"]"; 

这解决了问题。我担心这可能会导致将来出现错误,想知道是否有更好的方法?

import org.codehaus.jackson.map.ObjectMapper;

  ObjectMapper mapper = new ObjectMapper();
  String json = mapper.writeValueAsString(object);
  String jsonFixed = "["+json+"]";

JSON 字符串(之前没有 '[' 和 ']' 之后)

{"organisationid":"2345612ß","projectid":"12345678",
"place":{"placeId":"2345","last_place":"123-3"},
"user":{"isY":"false","isHere":"false","isBuyer":"false"},
"x":{"identifier":"SHDG-28CHD"},
"event_type":"x_depart"}

【问题讨论】:

  • JSON 没有丢失方括号。 JSON 中的方括号表示一个数组。您正在序列化单个对象,而不是数组,因此没有方括号。通过添加方括号,您可以将 JSON 从对象的表示形式转换为长度为 1 的对象数组的表示形式。请参阅 JSON 规范以进一步阅读:json.org
  • @Affess 这应该是一个答案,而不是评论。

标签: java json rest jackson http-post


【解决方案1】:

转自我之前的评论:

JSON 没有缺少方括号。 JSON 中的方括号表示一个数组。您正在序列化单个对象,而不是数组,因此没有方括号。通过添加方括号,您已将 JSON 从对象的表示形式转换为长度为 1 的对象数组的表示形式。

请参阅JSON specification 了解更多信息。

【讨论】: