2012-12-29 67 views
0

嗨任何一个可以告诉我,我该怎么处理这个JSON休息消耗方法新泽西州,使用JSON阵列

在我的客户端我有这样的代码:

var search_form_data_array = new Object(); 

search_form_data_array[0] = JSON.stringify({name: "dept", 
    type:"equal", 
    value: "233"}); 

search_form_data_array[1] = JSON.stringify({ name: "deptDesc", 
    type:"equal", 
    value:"depts" }); 

$.ajax({ 
    url: globalvars.otherDiscoveredSearchFormUri, 
    type:'POST', 
    data:{"SearchFormInput":search_form_data_array}, 
    contentType:'application/json', 
    success: function(){} 
}); 

我的服务器端代码:

@POST 
@Path("/SearchForm") 
@Consumes(MediaType.APPLICATION_JSON) 
public String getOtherChargesSerachData(SearchFormInput data) 

    return data.name; 
} 

public static class SearchFormInput { 
    public String name; 
    public String type; 
    public String value; 
} 

回答

0

你可以使用XStream的阅读为:

protected Object loadFromJSONRequest(String strJSON, Map<String, Class> aliasMap) { 
    String aliasValue = ""; 
    try { 
     XStream xStream = new XStream(new JettisonMappedXmlDriver()); 
     aliasValue = includeAliasesForRequest(xStream, aliasMap); 
     return xStream.fromXML(strJSON); 
    } catch (XStreamException e) { 
     logExceptions(BaseResource.class, e.getStackTrace().toString()); 
     throw new PubGUIErrorResponse("error." + aliasValue + ".conversion"); 
    } catch (Exception e) { 
     logExceptions(BaseResource.class, e.getMessage().toString()); 
     throw new PubGUIErrorResponse("error.conversion"); 
    } 
} 
0

您可以使用Google的Gson将json序列化为Java对象或将其反序列化。

解析数组,你可以使用这样的东西。请注意,该参数不能是SearchFormInput,因为您正在发送一个虚拟JSON对象,并在其中包含一个列表。

@POST 
@Path("/SearchForm") 
@Consumes(MediaType.APPLICATION_JSON) 
public String getOtherChargesSerachData(String data){ 

    // You will need to parse data if you want to send something more than the array 

    Gson gson = new Gson(); 
    Type listType = new TypeToken<List<SearchFormInput>>() {}.getType(); 
    List<SearchFormInput> searchFormInputList = gson.fromJson(data, listType); 

    // iterate searchFormInputList to do whatever you want 

    return "Whatever string you want to return"; 
} 

如果你把它这个样子,

$.ajax({ 
    url: globalvars.otherDiscoveredSearchFormUri, 
    type:'POST', 
    data:{"SearchFormInput":search_form_data_array}, 
    contentType:'application/json', 
    success: function(){} 
}); 

你需要从值“SearchFormInput”获取数组,然后解析它。 如果你不需要这个,你可以发送数组。就像:

var stringArray = JSON.stringify(search_form_data_array); 

..., 
data: stringArray, 
..., 
+0

嗨Nakib感谢您的答复。请给我建议我怎么用JSON来代替使用gson。 –

+0

嗨Nakib你可以请帮助我如何解析与使用gson相同。 –

+0

嗨Nikib,我得到了答案,我需要添加JSONArray jsonArray = new JSONArray(obj);我可以遍历这个数组来获取该数组的对象。感谢您的帮助。 –