java - 使用 jackson databind 将 JSON 反序列化为 Map<String,String>

标签 java spring rest jackson

我在我的 Web 应用程序中使用 spring 4.0.5.RELEASEjackson-databind 2.2.3。 发送此 JSON 时:

{"keyField1":"57579","keyField2":"sdf","someField":"sdasd","parameters":[{"parameterName":"dfgdfg","parameterValue":"sdf"},{"parameterName":"erwer","parameterValue":"sdfsdf"}]}

对于 Controller 来说,我在浏览器上得到的只是一个HTTP 400 Bad Request, 我在本地 websphere 日志中没有看到任何错误,但经过一些测试后,我发现问题出在将 JSON 数组反序列化到 map 上。 我从来没有进入 Controller 的保存方法。 尝试了一些注释,例如 @JsonDeserialize(as=HashMap.class) 但没有成功。 我该如何解决这个问题?

我的POJO:

class MyClassId implements Serializable {
private static final long serialVersionUID = 5022985493208399875L;
String keyField1;
String keyField2;
}

@Entity
@IdClass(MyClassId.class)
public class MyClass {
@Id
String keyField1;

@Id
String keyField2;

String someField;

@ElementCollection
@MapKeyColumn(name="parameterName")
@Column(name="parameterValue", length=400)
Map<String, String> parameters;
... Getters and Setters ...

我的 Controller :

@RestController
@RequestMapping("/myclass/**")
public class MyClassController {

@Transactional
@RequestMapping(value = "/save", method = RequestMethod.POST, consumes={"application/json"})
public @ResponseBody ServiceResponce<MyClass> save(@RequestBody MyClass processToSave) {
    ... Code ...
}
}

最佳答案

我看到您的问题有两种解决方案:

希望对你有帮助 蒂埃里

关于java - 使用 jackson databind 将 JSON 反序列化为 Map<String,String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28807803/

相关文章:

java - Storm 与卡夫卡 : Increasing amount of open file descriptors

java - 从 Spring 上下文中提取启动错误

rest - 用于获取完整用户列表的 Jira Rest Api

javascript - Meteor.call() 将 js 对象格式化为正确的剩余查询

rest - REST 中的资源不支持操作时的 HTTP 状态代码 404 或 501

Java MongoDB 查询条件(WHERE date > X and field = value)忽略第二个子句

java - "Invalid method name: ' 在 Java 中使用 Hive Client 执行 '"错误

java - CompletableFuture 的完成处理程序在哪个线程中执行?

java - 如何本地化整个 java spring 应用程序

java - 处理程序之前的函数 spring 3