转载http://starscream.iteye.com/blog/1067606
Spring mvc处理json需要使用jackson的类库,因此为支持json格式的输入输出需要先修改pom.xml增加jackson包的引用
Xml代码
<!-- json -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-lgpl</artifactId>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-lgpl</artifactId>
<version>1.8.1</version>
</dependency>
先修改之前的helloworld.jsp,增加客户端json格式的数据输入。
Javascript代码
var cfg = {
type: 'POST',
data: JSON.stringify({userName:'winzip',password:'password',mobileNO:'13818881888'}),
dataType: 'json',
contentType:'application/json;charset=UTF-8',
success: function(result) {
alert(result.success);
}
};
function doTestJson(actionName){
cfg.url = actionName;
$.ajax(cfg);
}
根据前面的分析,在spring mvc中解析输入为json格式的数据有两种方式
1:使用@RequestBody来设置输入
Java代码
@RequestMapping("/json1")
@ResponseBody
public JsonResult testJson1(@RequestBody User u){
log.info("get json input from request body annotation");
log.info(u.getUserName());
return new JsonResult(true,"return ok");
}
2:使用HttpEntity来实现输入绑定
Java代码
@RequestMapping("/json2")
public ResponseEntity<JsonResult> testJson2(HttpEntity<User> u){
log.info("get json input from HttpEntity annotation");
log.info(u.getBody().getUserName());
ResponseEntity<JsonResult> responseResult = new ResponseEntity<JsonResult>( new JsonResult(true,"return ok"),HttpStatus.OK);
return responseResult;
}
Json格式的输出也对应有两种方式
1:使用@responseBody来设置输出内容为context body
2:返回值设置为ResponseEntity<?>类型,以返回context body
另外,第三种方式是使用ContentNegotiatingViewResolver来设置输出为json格式,需要修改servlet context配置文件如下
Xml代码
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
</map>
</property>
<property name="defaultViews">
<list>
<bean
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</list>
</property>
<property name="ignoreAcceptHeader" value="true" />
</bean>
但这种格式的输出会返回{model类名:{内容}} 的json格式,
例如,以下代码
Java代码
@RequestMapping("/json3.json")
public JsonResult testJson3(@RequestBody User u){
log.info("handle json output from ContentNegotiatingViewResolver");
return new JsonResult(true,"return ok");
}
期望的返回是 {success:true,message:”return ok”};
但实际返回的却是 {"jsonResult":{"success":true,"msg":"return ok"}}
原因是MappingJacksonJsonView中对返回值的处理未考虑modelMap中只有一个值的情况,直接是按照mapName:{mapResult}的格式来返回数据的。
修改方法,重载MappingJacksonJsonView类并重写filterModel方法如下
Java代码
protected Object filterModel(Map<String, Object> model) {
Map<?, ?> result = (Map<?, ?>) super.filterModel(model);
if (result.size() == 1) {
return result.values().iterator().next();
} else {
return result;
}
}
对应的ContentNegotiatingViewResolver修改如下
Xml代码
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
</map>
</property>
<property name="defaultViews">
<list>
<bean
class="net.zhepu.json.MappingJacksonJsonView" />
</list>
</property>
<property name="ignoreAcceptHeader" value="true" />
</bean>
分享到:
相关推荐
3. **模型绑定和JSON输入** 当前端向后端发送JSON数据时,Spring MVC可以自动将这些数据绑定到控制器方法的参数上。这需要我们的参数是Java Bean类型,其属性与JSON对象的键相对应。例如,如果我们有一个`User`类,...
在这个例子中,`古诗.json`是输入的JSON文件,而`古诗.jsonl`是输出的JSONL文件。`json.loads()`用于将JSON字符串解析为Python对象,`json.dumps()`则将Python对象序列化回JSON字符串。 转换古诗内容从JSON到JSONL...
通过调用校验函数,程序可以判断输入的JSON数据是否有效,然后输出相应的结果。 `JSON_checker.h`是头文件,定义了`JSON_checker`库对外提供的接口。这些接口可能包括如`json_validate`这样的函数,用于执行实际的...
此外,Mule还支持从各种数据源解析JSON输入,例如HTTP请求、文件或数据库查询结果。通过`<dw:input-payload>`或`<dw:payload>`元素,你可以将接收到的数据转换为JSON对象,并进行进一步的处理。 在实际应用中,你...
1. **美化输出**:将一串未经格式化的JSON文本,通过添加缩进和换行,使其变得整洁易读。 2. **错误检测**:检查输入的JSON是否有效,如果存在语法错误,会提供相应的错误提示。 3. **折叠/展开**:对于嵌套层级较深...
在实际开发中,我们经常需要将JSON字符串进行格式化,以便于查看和调试,本文将详细介绍如何使用Fastjson封装一个JSON格式化工具。 首先,我们需要引入Fastjson的依赖。如果你使用的是Maven,可以在pom.xml文件中...
JSON是一种轻量级的数据交换格式,它允许数据以键值对的形式存储,易于人阅读和编写,同时也易于机器解析和生成。在本场景中,我们可能需要一个函数或方法来检查传递的字符串是否符合JSON的标准格式,以确保数据的...
通过var_dump函数,我们可以打印出数组的详细结构,了解数据的具体内容和格式。 在API接口开发过程中,保证数据的准确传输和正确解析是非常关键的。了解和掌握JSON数据的编码和解码过程,可以有效地提升API接口开发...
1. **美化输出**:将紧凑的JSON字符串展开,添加缩进和换行,使数据层次结构一目了然。 2. **高亮显示**:不同类型的值(如字符串、数字、对象、数组等)使用不同的颜色高亮,便于快速识别。 3. **错误检查**:验证...
JSON格式化工具还需要处理无效的JSON输入,提供友好的错误提示。可以使用JSON库提供的解析异常类,如Jackson的`JsonParseException`或Gson的`JsonSyntaxException`。 9. **用户体验**: 优秀的图形界面不仅要有...
在Spring MVC框架中,处理JSON格式的输入输出是开发RESTful服务的重要一环。JSON(JavaScript Object Notation)因其轻量级和良好的跨平台兼容性而被广泛使用。Spring MVC提供了灵活的方式来处理JSON数据的输入和...
2. 格式化输出:将混乱的JSON字符串转换成清晰、层次分明的格式,便于理解和分析数据结构。 3. 查找与替换:部分工具还提供查找和替换功能,方便在大量JSON数据中定位特定内容并进行修改。 4. 折叠/展开:可以折叠或...
`json.dumps()`和`json.loads()`还有其他一些选项可以调整输出的格式,例如: - `indent`:设置缩进的空格数,用于美化输出。 - `sort_keys`:如果为True,输出的键会按字典序排序。 - `separators`:控制逗号和...
在IT行业中,JSON(JavaScript Object Notation)是一种广泛使用的轻量级数据交换格式,它易于人阅读和...无论是解析JSON输入、生成JSON输出,还是在Java对象和JSON之间进行转换,这些库都能提供强大且高效的解决方案。
1. **美化输出**:将原始的、未格式化的JSON数据按照标准格式进行缩进和换行,便于阅读。例如,它可以将连续的键值对通过缩进区分层次,使复杂的JSON结构清晰可见。 2. **错误检查**:工具通常会尝试解析输入的JSON...
对于压缩包内的源码,可能包含了一个自定义的JSON解析器和格式化器。这些源码通常会包含以下部分: 1. JSON解析器:一个函数或类,接受JSON字符串作为输入,返回一个解析后的`TJSONObject`或`TJSONArray`实例。 2. ...
1. **输入与输出**:用户可以输入未格式化的JSON字符串,工具会将其自动格式化并显示在界面上。同时,可能也支持导入本地JSON文件或导出格式化后的JSON到新的文件中。 2. **格式化选项**:工具可能允许用户自定义...
将 JSON 格式化输出为模型的属性 写在之前的注意 JSON中的key对应的value为Null的话会格式化成NSString类型 格式化之前光标放在你需要添加属性的地方 Root...