2012-12-29 2 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 답장을 보내 주셔서 감사합니다. gson을 사용하는 대신 JSON으로 어떻게 할 수 있는지 제안 해주십시오. –

+0

안녕하세요. Nakib 님은 gson을 사용하여 동일한 구문을 분석하는 방법을 알려주세요. –

+0

안녕하세요 Nikib, 내가 JSONArray 추가 할 필요가 대답을 가지고 jsonArray = 새로운 JSONArray (obj); 이 배열을 반복하여 배열의 객체를 가져올 수 있습니다. 도움을 주셔서 감사합니다. –