Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
9a84ef46
S
spring-framework
项目概览
爱吃血肠
/
spring-framework
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9a84ef46
编写于
6月 12, 2009
作者:
A
Arjen Poutsma
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
- Javadoc
- Renamed JacksonHttpMessageConverter to BindingJacksonHttpMessageConverter
上级
d26df490
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
55 addition
and
7 deletion
+55
-7
org.springframework.web/src/main/java/org/springframework/http/converter/json/BindingJacksonHttpMessageConverter.java
...tp/converter/json/BindingJacksonHttpMessageConverter.java
+23
-2
org.springframework.web/src/main/java/org/springframework/http/converter/xml/MarshallingHttpMessageConverter.java
...k/http/converter/xml/MarshallingHttpMessageConverter.java
+0
-1
org.springframework.web/src/test/java/org/springframework/http/converter/json/BindingJacksonHttpMessageConverterTest.java
...onverter/json/BindingJacksonHttpMessageConverterTest.java
+32
-4
未找到文件。
org.springframework.web/src/main/java/org/springframework/http/converter/json/JacksonHttpMessageConverter.java
→
org.springframework.web/src/main/java/org/springframework/http/converter/json/
Binding
JacksonHttpMessageConverter.java
浏览文件 @
9a84ef46
...
...
@@ -18,6 +18,7 @@ package org.springframework.http.converter.json;
import
java.io.IOException
;
import
java.nio.charset.Charset
;
import
java.util.List
;
import
org.codehaus.jackson.JsonEncoding
;
import
org.codehaus.jackson.JsonFactory
;
...
...
@@ -34,10 +35,19 @@ import org.springframework.http.converter.HttpMessageNotWritableException;
import
org.springframework.util.Assert
;
/**
* Implementation of {@link org.springframework.http.converter.HttpMessageConverter HttpMessageConverter} that can read
* and write JSON using <a href="http://jackson.codehaus.org/">Jackson's</a> {@link ObjectMapper}.
*
* <p>This converter can be used to bind to typed beans, or untyped {@link java.util.HashMap HashMap} instances.
*
* <p>By default, this converter supports {@code application/json}. This can be overridden by setting the {@link
* #setSupportedMediaTypes(List) supportedMediaTypes} property, and overriding the {@link #getContentType(Object)}
* method.
*
* @author Arjen Poutsma
* @since 3.0
*/
public
class
JacksonHttpMessageConverter
<
T
>
extends
AbstractHttpMessageConverter
<
T
>
{
public
class
Binding
JacksonHttpMessageConverter
<
T
>
extends
AbstractHttpMessageConverter
<
T
>
{
private
ObjectMapper
objectMapper
=
new
ObjectMapper
();
...
...
@@ -45,20 +55,31 @@ public class JacksonHttpMessageConverter<T> extends AbstractHttpMessageConverter
private
JsonEncoding
encoding
=
JsonEncoding
.
UTF8
;
public
JacksonHttpMessageConverter
()
{
/**
* Construct a new {@code BindingJacksonHttpMessageConverter},
*/
public
BindingJacksonHttpMessageConverter
()
{
super
(
new
MediaType
(
"application"
,
"json"
));
}
/**
* Sets the {@code ObjectMapper} for this converter. By default, a default {@link ObjectMapper#ObjectMapper()
* ObjectMapper} is used.
*/
public
void
setObjectMapper
(
ObjectMapper
objectMapper
)
{
Assert
.
notNull
(
objectMapper
,
"'objectMapper' must not be null"
);
this
.
objectMapper
=
objectMapper
;
}
/** Sets the {@code JsonFactory} for this converter. By default, a {@link MappingJsonFactory} is used. */
public
void
setJsonFactory
(
JsonFactory
jsonFactory
)
{
Assert
.
notNull
(
jsonFactory
,
"'jsonFactory' must not be null"
);
this
.
jsonFactory
=
jsonFactory
;
}
/**
* Sets the {@code JsonEncoding} for this converter. By default, {@linkplain JsonEncoding#UTF8 UTF-8} is used.
*/
public
void
setEncoding
(
JsonEncoding
encoding
)
{
this
.
encoding
=
encoding
;
}
...
...
org.springframework.web/src/main/java/org/springframework/http/converter/xml/MarshallingHttpMessageConverter.java
浏览文件 @
9a84ef46
...
...
@@ -44,7 +44,6 @@ import org.springframework.util.Assert;
* @author Arjen Poutsma
* @since 3.0
*/
public
class
MarshallingHttpMessageConverter
extends
AbstractXmlHttpMessageConverter
<
Object
>
implements
InitializingBean
{
...
...
org.springframework.web/src/test/java/org/springframework/http/converter/json/JacksonHttpMessageConverterTest.java
→
org.springframework.web/src/test/java/org/springframework/http/converter/json/
Binding
JacksonHttpMessageConverterTest.java
浏览文件 @
9a84ef46
...
...
@@ -18,6 +18,9 @@ package org.springframework.http.converter.json;
import
java.io.IOException
;
import
java.nio.charset.Charset
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
static
org
.
junit
.
Assert
.*;
import
org.junit.Before
;
...
...
@@ -28,17 +31,22 @@ import org.springframework.http.MockHttpInputMessage;
import
org.springframework.http.MockHttpOutputMessage
;
/** @author Arjen Poutsma */
public
class
JacksonHttpMessageConverterTest
{
public
class
Binding
JacksonHttpMessageConverterTest
{
private
JacksonHttpMessageConverter
<
MyBean
>
converter
;
private
Binding
JacksonHttpMessageConverter
<
MyBean
>
converter
;
@Before
public
void
setUp
()
{
converter
=
new
JacksonHttpMessageConverter
<
MyBean
>();
converter
=
new
BindingJacksonHttpMessageConverter
<
MyBean
>();
}
@Test
public
void
supports
()
{
assertTrue
(
converter
.
supports
(
MyBean
.
class
));
}
@Test
public
void
read
()
throws
IOException
{
public
void
read
Typed
()
throws
IOException
{
String
body
=
"{\"bytes\":\"AQI=\",\"array\":[\"Foo\",\"Bar\"],\"number\":42,\"string\":\"Foo\",\"bool\":true,\"fraction\":42.0}"
;
MockHttpInputMessage
inputMessage
=
new
MockHttpInputMessage
(
body
.
getBytes
(
"UTF-8"
));
...
...
@@ -52,6 +60,26 @@ public class JacksonHttpMessageConverterTest {
assertArrayEquals
(
new
byte
[]{
0x1
,
0x2
},
result
.
getBytes
());
}
@Test
@SuppressWarnings
({
"unchecked"
})
public
void
readUntyped
()
throws
IOException
{
BindingJacksonHttpMessageConverter
<
HashMap
>
converter
=
new
BindingJacksonHttpMessageConverter
<
HashMap
>();
String
body
=
"{\"bytes\":\"AQI=\",\"array\":[\"Foo\",\"Bar\"],\"number\":42,\"string\":\"Foo\",\"bool\":true,\"fraction\":42.0}"
;
MockHttpInputMessage
inputMessage
=
new
MockHttpInputMessage
(
body
.
getBytes
(
"UTF-8"
));
inputMessage
.
getHeaders
().
setContentType
(
new
MediaType
(
"application"
,
"json"
));
HashMap
<
String
,
Object
>
result
=
converter
.
read
(
HashMap
.
class
,
inputMessage
);
assertEquals
(
"Foo"
,
result
.
get
(
"string"
));
assertEquals
(
42
,
result
.
get
(
"number"
));
assertEquals
(
42
D
,
(
Double
)
result
.
get
(
"fraction"
),
0
D
);
List
array
=
new
ArrayList
();
array
.
add
(
"Foo"
);
array
.
add
(
"Bar"
);
assertEquals
(
array
,
result
.
get
(
"array"
));
assertEquals
(
Boolean
.
TRUE
,
result
.
get
(
"bool"
));
assertEquals
(
"AQI="
,
result
.
get
(
"bytes"
));
}
@Test
public
void
write
()
throws
IOException
{
MockHttpOutputMessage
outputMessage
=
new
MockHttpOutputMessage
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录