2012-12-29 103 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);我可以遍歷這個數組來獲取該數組的對象。感謝您的幫助。 –