泽西岛,消耗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; 
}

您可以使用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");
    }
}

您可以使用Google的GSON序列化/delelialize 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,
...,

最新更新