【问题标题】:spring rest service consume dynamic json fieldspring rest服务消耗动态json字段
【发布时间】:2016-10-10 15:16:23
【问题描述】:

我从 javascript 收到更新 mongoDb 集合的 json 请求。 部分 json 映射到我的 java 类(Person),但内部 json 我映射到 JsonObject 因为动态字段的名称。 将动态字段的名称映射到 JsonObject 不会完成这项工作。 我如何映射 Person 类中的动态字段以使其在 mongo db 中保持原样

但结果是:

{ "person": "david",
  "family": "david family",
  "address":"david street", 
  "person_detail":{
                  "members":{}   **<=== should be list of key value**
                },
  "address_detail":{
                  "members":{}  **<=== should be list of key value**
                }
}

我希望“person_detail”和“address_detail”将包含键值列表

我通过@requestBody 使用json。 我如何定义应该获取动态字段的类的名称。

例如:

{ "person": "david",
  "family": "david family",
  "address":"david street", 
  "person_detail":{... collection of unknown pairs key value ....},
  "address_detail":{... collection of unknown pairs key value ....}
}

public Class Person{

   private String person;
   private String family;
   private JsonObject person_detail;
   private JsonObject address_detail;

   getter...

   setter...

}

我的控制器:

@RequestMapping(value={"/updatePerson"},method=RequestMethod.POST,consume="application/json")
public @ResponseBody ClientReturn clientReturn updatePerson(@RequestBody Person person) {

   ......

}

【问题讨论】:

  • 您正在尝试将列表映射到 Json 对象。您应该将其映射到 JSONArray。如果您使用的是 Jackson,则可以直接将其映射到列表。

标签: json spring mongodb rest request


【解决方案1】:

如何从客户端发布键值列表的解决方案是定义 jsonObject 如Map&lt;String,Object&gt;.

现在对我有用

public Class Person{

   private String person;
   private String family;
   private Map<String,Object> person_detail;
   private Map<String,Object> address_detail;

   getter...

   setter...

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 2020-01-06
    • 2014-12-25
    • 2016-05-03
    相关资源
    最近更新 更多