`
wanghaisheng
  • 浏览: 91693 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

springmvc jackson自动解析extjs json

阅读更多

最近学习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对象

分享到:
评论

相关推荐

    springmvc加入json支持

    2. `jackson-core-2.4.2.jar`: Jackson核心库提供了基本的JSON解析和生成功能。它是其他Jackson模块(如databind和annotations)的基础,包含了流式API(JsonParser和JsonGenerator)以及数据绑定的基础结构。 3. `...

    springmvc对json支持

    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+hibernate+extjs4mvc 权限管理

    SpringMVC+Mybatis+ExtJs5.0

    【SpringMVC+Mybatis+ExtJs5.0】是一个典型的Java Web开发框架组合,用于构建高效、可扩展的企业级后台管理系统。这个框架的核心在于SpringMVC作为控制器,Mybatis作为数据访问层,以及ExtJs5.0作为前端UI框架。 1....

    Spring+SpringMVC+MyBatis返回json所需jar包

    2. **配置SpringMVC**:在SpringMVC的配置文件中,你需要启用Jackson作为默认的JSON消息转换器。在`web.xml`中配置DispatcherServlet,或者在Spring Boot中通过`@EnableWebMvc`注解和`WebMvcConfigurerAdapter`的...

    springmvc jackson jar 包

    它提供了多种功能,如将Java对象转换为JSON字符串,以及将JSON字符串解析为Java对象。在Spring MVC中,Jackson作为默认的JSON处理器,使得开发者能够方便地处理HTTP请求和响应中的JSON数据。 要使用Spring MVC和...

    SpringMVC中后台转换json格式

    2. `jackson-core-2.7.0.jar`: Jackson的核心模块,包含了基本的JSON解析和生成功能。 3. `jackson-annotations-2.7.0.jar`: 提供了一组注解,用于在Java类上定义JSON映射规则。 要启用SpringMVC对JSON的支持,我们...

    SpringMVC使用JSON的Jackson的jar包

    在上面的例子中,`getUser`方法返回一个`User`对象,SpringMVC会使用Jackson将其转换为JSON格式并返回给客户端。 总结,SpringMVC中的`@ResponseBody`配合Jackson库,使得开发人员可以方便地处理JSON数据。`...

    springmvc+mybatis+Extjs权限

    本项目采用的是SpringMVC、MyBatis以及ExtJS这三大核心技术,构建了一个集成了权限管理的高效系统。以下将详细阐述这三个技术及其在权限管理中的应用。 **SpringMVC** SpringMVC是Spring框架的一部分,专门用于构建...

    springmvc3+extjs4.2案例

    - **JsonView**:在SpringMVC中,可以使用JsonView视图来返回JSON格式的数据,供ExtJS的Store加载和显示。 - **Controller通信**:ExtJS的Controller通过Ajax调用SpringMVC的Controller,实现前后端数据交换。 - ...

    springmvc+mybatis+extjs+ireport项目源码

    这是一个基于Java技术栈的Web应用程序项目,主要使用了SpringMVC、MyBatis、ExtJS和iReport四个关键组件。让我们逐一深入理解这些技术及其在项目中的应用。 **SpringMVC** 是Spring框架的一部分,主要用于构建Web...

    SpringMVC:整合JQUERY与JSON

    - **数据序列化与反序列化**:SpringMVC使用`@RequestBody`和`@ResponseBody`注解将JSON数据自动转换为Java对象,反之亦然。 - **响应处理**:jQuery接收服务器返回的JSON数据,通过回调函数处理结果,更新页面...

    (代码)SpringMVC第7讲:json支持

    这意味着,当你的返回类型是Java对象,且方法上有`@ResponseBody`注解时,Spring会自动调用Jackson库将对象转换为JSON字符串。 4. **MappingJackson2HttpMessageConverter**:这是SpringMVC中用于处理JSON的默认...

    springmvc-jackson-jar包集合

    当接收到JSON请求时,Spring会自动调用Jackson的`ObjectMapper`将JSON数据转换为Java对象;反之,当需要返回JSON响应时,也会利用`ObjectMapper`将Java对象转化为JSON。 四、优化JSON处理 为了提高性能和灵活性,...

    Jackson相关jar包,springMVC的Ajax请求,JSON

    2. `jackson-core-2.8.7.jar`:这是Jackson的核心库,包含了基本的JSON解析和生成功能。它能够读取和写入JSON流,但不包含任何有关Java对象绑定的功能。这个库是其他Jackson模块的基础。 3. `jackson-databind-...

    SpringMVC+Mybatis整合ExtJs5.0

    SpringMVC、MyBatis和ExtJS都是在开发企业级应用时常用的组件。这里我们将深入探讨如何将这些技术进行整合,以创建一个基于SpringMVC注解和MyBatis的数据层的后台管理框架,并结合ExtJS5.0构建用户管理界面。 首先...

    SpringMVC利用Ajax,JQuery交互Json

    在SpringMVC项目中,我们需要添加Jackson库以处理Json序列化和反序列化。在`pom.xml`中引入以下依赖: ```xml &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt; &lt;artifactId&gt;jackson-databind &lt;version&gt;2.9.8...

    SpringMVC 开发接口实例+json参数传递

    在SpringMVC中,我们可以使用Jackson库或者Gson库来处理JSON序列化和反序列化。 三、创建SpringMVC项目 1. 设置环境:首先,确保你已经安装了Java、Maven以及IDE(如IntelliJ IDEA或Eclipse)。 2. 创建Maven项目:...

    springmvc-json-lib.rar

    在SpringMVC中,我们可以使用Jackson的`@ResponseBody`注解,将控制器方法的返回值自动转换为JSON格式。同时,通过`@RequestBody`注解,我们可以将HTTP请求体中的JSON数据自动映射到方法参数中。 配置Jackson库需要...

    SpringMVC-9 处理JSON数据

    2. @RequestBody与@RequestParam:在控制器方法中,我们可以使用`@RequestBody`注解接收JSON请求体,将其自动转换为Java对象。对于GET请求,可以使用`@RequestParam`获取查询参数,但不适用于复杂的数据结构,如JSON...

Global site tag (gtag.js) - Google Analytics