不太熟悉的WebLogic,所以我不知道是什麼版本的澤西它使用(1 x或2.X),但與1.x中,你可以簡單地添加這種依賴
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>${jersey-version}</version>
</dependency>
這將取決於傑克遜。 Jackson已經反序列化並將Properties
對象序列化爲JSON對象。
這裏有一個簡單的測試
資源
@Path("/properties")
public class PropertiesResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getProperties() throws Exception {
FileInputStream fis = new FileInputStream("test.properties");
Properties props = new Properties();
props.load(fis);
return Response.ok(props).build();
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response postProperties(Properties properties) {
StringBuilder builder = new StringBuilder();
for (String key: properties.stringPropertyNames()) {
builder.append(key).append("=")
.append(properties.getProperty(key)).append("\n");
}
return Response.created(null).entity(builder.toString()).build();
}
}
測試
public void testMyResource() throws Exception {
ClientConfig config = new DefaultClientConfig();
config.getClasses().add(JacksonJsonProvider.class);
config.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,
Boolean.TRUE);
Client c = Client.create(config);
WebResource resource = c.resource(Main.BASE_URI).path("properties");
String json = resource.accept("application/json").get(String.class);
System.out.println(json);
FileInputStream fis = new FileInputStream("test.properties");
Properties props = new Properties();
props.load(fis);
String postResponse
= resource.type("application/json").post(String.class, props);
System.out.println(postResponse);
}
結果:
// from get
{"prop3":"value3","prop2":"value2","prop1":"value1"}
// from post
prop3=value3
prop2=value2
prop1=value1
對於配置,你只需要配置POJOMappin摹功能並註冊傑克遜提供商
綱領性
public class JerseyApplication extends ResourceConfig {
public JerseyApplication() {
packages(...);
getProviderClasses().add(JacksonJsonProvider.class);
getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
}
}
的web.xml
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
隨着新澤西2.X,這是一個有點簡單。我們只需要此提供
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.4.0</version>
</dependency>
和註冊同一JacksonJaxbJsonProvider
(雖然不同的包,類名是相同的)。無需Pojo映射功能。
注:在這兩種情況下,有兩種傑克遜提供商,一個JacksonJsonProvider
和JacksonJaxbJsonProvider
。如果您希望pojos的編組依賴於JAXB註釋,那麼您應該註冊後者。
是否有您正在使用的特定REST框架? – 2014-12-08 08:52:21
我在weblogic服務器中使用JAX-RS。默認提供者是weblogic中的Jersey。 – Shenal 2014-12-08 08:54:56
你爲什麼通過路徑發送jsonobject?爲什麼不通過形式? – 2014-12-08 09:08:22