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

GoogleのGsonを使用して、Javaオブジェクトとの間でjsonをシリアル化/逆シリアル化できます。

配列を解析するには、次のようなものを使用できます。リストを含むダミーのjsonオブジェクトを送信しているため、パラメーターをSearchFormInputにすることはできないことに注意してください。

@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 に答える
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 に答える