2012-04-12 78 views
1

即时通讯不知道如何获得json对象并使用其他球衣输出它使用rest从ajax json发布,im使用grizzly服务器,服务器已设置,应用程序需要获取代码json,请纠正我,谢谢!服务器获取json的球衣,JAVA

import java.io.IOException; 
import java.io.InputStream; 

import net.sf.json.JSONObject; 
import net.sf.json.JSONSerializer; 

import org.apache.commons.io.IOUtils; 

import javax.ws.rs.*; 

@Path("/helloworld") 
public class GetData { 
    @GET 
    @Consumes("application/json") 
      public String getResource(JSONObject obj) throws IOException { 

     InputStream in = (InputStream) obj.values(); 
     String data = IOUtils.toString(in); 

     JSONObject out = (JSONObject) JSONSerializer.toJSON(data); 

     String result = out.getString("name"); 
     return result;  


    } 

} 

回答

1

你需要知道,你的JSON对象应该被反序列化为什么。如果它只是一个JSONObject,你想手动解析它:

@Consumes("application/json") 
public String getResource(JSONObject obj) { 
... 
} 

如果是某种自定义对象的:

@Consumes("application/json") 
public String getResource(CustomObj customObj) { 
... 
} 

但你大约需要编组/该对象的解组,以照顾JSON by Jackson。

+0

ty为答案!我有一个我的jQuery代码在这里张贴一个json到服务器 – nihulus 2012-04-12 07:10:58

+0

函数sendData(){.0jax({0}'/ helloworld', type:'POST', contentType:'application/json', 数据:{JSON:JSON.stringify({ 名: “鲍勃”, ... })}, 数据类型: 'JSON' }); alert(“json posted!”); }; 所以变量obj包含json数据? – nihulus 2012-04-12 07:14:24

+0

是的,该对象将包含请求的主体 - 在你的情况下它是'{name:“Bob”,...}' – 2012-04-12 07:19:36