最近学习extjs4,服务器端用springmvc,但在springmvc解析extjs传来的json数据时总是找不到好的解决办法
录我进行指添加或指修改时,往后台传的json数据如下(取名为jsonStr)
{"records": [{"id":"dfds","name":"fsdf","email":"sdf34ds"},
{"id":"dfdsf","name":"fsdf","email":"sdf334ds"}]}
本来想让后台springmvc在controller类的方法参数中使用@RequestBody自动解析成java对象的集合:List<User> 。可总是不能如愿,如果我extjs向后台传送的json数组没有records,只是单纯的{[{"id":"dfds","name":"fsdf","email":"sdf34ds"},
{"id":"dfdsf","name":"fsdf","email":"sdf334ds"}]}
则可用@RequestBody List<User> 处理。后台想到直接把前台传进的json数据当成字符串手动解析,也比较麻烦
代码:
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(jsonStr,Map.class);
也不能直接转换为List<User> ,因为map.get(key)得到的只是List<LinkedHashMap>而不是User对象集合,
后来想到用JsonNode, 一个一个地斌值,代码如下:
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = null;
try {
rootNode = objectMapper.readValue(records, JsonNode.class);
JsonNode recordsNode = rootNode.path("records");
} catch (JsonParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// // System.out.println("recordsNode==>"+recordsNode);
List<String> names = recordsNode.findValuesAsText("name");
List<String> emails = recordsNode.findValuesAsText("email");
List<String> ids = recordsNode.findValuesAsText("id");
for(int i=0; i<ids.size(); i++){
User user = new User();
user.setId(System.currentTimeMillis()+"");
user.setName(names.get(i));
user.setEmail(emails.get(i));
data.add(user);
貌似太繁锁了
后来google一下,有位老兄说可以这样配置
public @ResponseBody String create(@RequestBody EntityData<User> datas);
EntityData的代码如下:package com.wanghaisheng.controller;
import java.util.List;
public class EntityData<T> {
private List<T> records;
public List<T> getRecords() {
return records;
}
public void setRecords(List<T> records) {
this.records = records;
}
}
一切OK,spring真的太智能了。
不过,看似我错了,自动装配后,此时List中的对象好像还是LinkedHashMap而不是User对象
分享到:
相关推荐
2. `jackson-core-2.4.2.jar`: Jackson核心库提供了基本的JSON解析和生成功能。它是其他Jackson模块(如databind和annotations)的基础,包含了流式API(JsonParser和JsonGenerator)以及数据绑定的基础结构。 3. `...
Jackson是Java中最流行的JSON库之一,它提供了解析JSON到Java对象和将Java对象序列化为JSON的能力。 1. **Jackson库**:Jackson库是Spring MVC支持JSON的核心。它包含三个主要模块:`jackson-core`、`jackson-...
springmvc+hibernate+extjs4mvc 权限管理springmvc+hibernate+extjs4mvc 权限管理springmvc+hibernate+extjs4mvc 权限管理
【SpringMVC+Mybatis+ExtJs5.0】是一个典型的Java Web开发框架组合,用于构建高效、可扩展的企业级后台管理系统。这个框架的核心在于SpringMVC作为控制器,Mybatis作为数据访问层,以及ExtJs5.0作为前端UI框架。 1....
2. **配置SpringMVC**:在SpringMVC的配置文件中,你需要启用Jackson作为默认的JSON消息转换器。在`web.xml`中配置DispatcherServlet,或者在Spring Boot中通过`@EnableWebMvc`注解和`WebMvcConfigurerAdapter`的...
它提供了多种功能,如将Java对象转换为JSON字符串,以及将JSON字符串解析为Java对象。在Spring MVC中,Jackson作为默认的JSON处理器,使得开发者能够方便地处理HTTP请求和响应中的JSON数据。 要使用Spring MVC和...
2. `jackson-core-2.7.0.jar`: Jackson的核心模块,包含了基本的JSON解析和生成功能。 3. `jackson-annotations-2.7.0.jar`: 提供了一组注解,用于在Java类上定义JSON映射规则。 要启用SpringMVC对JSON的支持,我们...
在上面的例子中,`getUser`方法返回一个`User`对象,SpringMVC会使用Jackson将其转换为JSON格式并返回给客户端。 总结,SpringMVC中的`@ResponseBody`配合Jackson库,使得开发人员可以方便地处理JSON数据。`...
本项目采用的是SpringMVC、MyBatis以及ExtJS这三大核心技术,构建了一个集成了权限管理的高效系统。以下将详细阐述这三个技术及其在权限管理中的应用。 **SpringMVC** SpringMVC是Spring框架的一部分,专门用于构建...
- **JsonView**:在SpringMVC中,可以使用JsonView视图来返回JSON格式的数据,供ExtJS的Store加载和显示。 - **Controller通信**:ExtJS的Controller通过Ajax调用SpringMVC的Controller,实现前后端数据交换。 - ...
这是一个基于Java技术栈的Web应用程序项目,主要使用了SpringMVC、MyBatis、ExtJS和iReport四个关键组件。让我们逐一深入理解这些技术及其在项目中的应用。 **SpringMVC** 是Spring框架的一部分,主要用于构建Web...
- **数据序列化与反序列化**:SpringMVC使用`@RequestBody`和`@ResponseBody`注解将JSON数据自动转换为Java对象,反之亦然。 - **响应处理**:jQuery接收服务器返回的JSON数据,通过回调函数处理结果,更新页面...
这意味着,当你的返回类型是Java对象,且方法上有`@ResponseBody`注解时,Spring会自动调用Jackson库将对象转换为JSON字符串。 4. **MappingJackson2HttpMessageConverter**:这是SpringMVC中用于处理JSON的默认...
当接收到JSON请求时,Spring会自动调用Jackson的`ObjectMapper`将JSON数据转换为Java对象;反之,当需要返回JSON响应时,也会利用`ObjectMapper`将Java对象转化为JSON。 四、优化JSON处理 为了提高性能和灵活性,...
2. `jackson-core-2.8.7.jar`:这是Jackson的核心库,包含了基本的JSON解析和生成功能。它能够读取和写入JSON流,但不包含任何有关Java对象绑定的功能。这个库是其他Jackson模块的基础。 3. `jackson-databind-...
SpringMVC、MyBatis和ExtJS都是在开发企业级应用时常用的组件。这里我们将深入探讨如何将这些技术进行整合,以创建一个基于SpringMVC注解和MyBatis的数据层的后台管理框架,并结合ExtJS5.0构建用户管理界面。 首先...
在SpringMVC项目中,我们需要添加Jackson库以处理Json序列化和反序列化。在`pom.xml`中引入以下依赖: ```xml <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind <version>2.9.8...
在SpringMVC中,我们可以使用Jackson库或者Gson库来处理JSON序列化和反序列化。 三、创建SpringMVC项目 1. 设置环境:首先,确保你已经安装了Java、Maven以及IDE(如IntelliJ IDEA或Eclipse)。 2. 创建Maven项目:...
在SpringMVC中,我们可以使用Jackson的`@ResponseBody`注解,将控制器方法的返回值自动转换为JSON格式。同时,通过`@RequestBody`注解,我们可以将HTTP请求体中的JSON数据自动映射到方法参数中。 配置Jackson库需要...
2. @RequestBody与@RequestParam:在控制器方法中,我们可以使用`@RequestBody`注解接收JSON请求体,将其自动转换为Java对象。对于GET请求,可以使用`@RequestParam`获取查询参数,但不适用于复杂的数据结构,如JSON...