0

嗨,谁能告诉我如何在休息消耗方法中处理这个 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; 
}
4

2 回答 2

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");
    }
}
于 2012-12-29T10:40:21.297 回答
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,
...,
于 2012-12-29T12:15:31.853 回答