Как получить строку JSON с помощью JsonpRequestBuilder - PullRequest
4 голосов
/ 04 мая 2011

Я использую GWT JsonpRequestBuilder для выдачи межсайтового REST-запроса, ответом которого является объект JSON.

Параметром обратного вызова метода requestObject является JavaScriptObject.но я не хочу реализовывать JavaScriptObject, а скорее анализировать ответ JSON напрямую.В любом случае я могу получить строку JSON непосредственно из любого метода JavaScriptObject или JsonpRequestBuilder?

Ответы [ 3 ]

6 голосов
/ 04 мая 2011

Если вы хотите использовать модуль com.google.gwt.json.JSON (серьезно, вам лучше написать JavaScriptObject s, этот JSON-модуль является PITA для работы), тогда вы можете просто обернуть возвращенный JavaScriptObject в JSONObject или JSONArray:

new JSONObject(myJavaScriptObject)
1 голос
/ 17 августа 2012

@ Gu Попробуйте избежать кавычек в сгенерированном JSON. Например, в коде на стороне сервера введите

    json = json.replace( "\"", "\\\"" )

Чем обернуть полученную строку следующим образом:

    String jsonCallback = request.getParameter("jsonpcallback") //or any other name
    StringBuilder response = new StringBuilder();
    responseBody.append( jsonCallback ).append( "(\"" ).append( json ).append( "\");");

Этот код работает для меня на стороне клиента:

    JsonpRequestBuilder jsonp = new JsonpRequestBuilder();
    jsonp.setCallbackParam("jsonpcallback");
    jsonp.requestString(....);

P.S. Сожалею. Недостаточно баллов, чтобы прокомментировать уже полученный ответ.

1 голос
/ 04 мая 2011

Используйте requestString вместо requestObject. Как это:

JsonpRequestBuilder jsonp = new JsonpRequestBuilder();
jsonp.requestString(url,
     new AsyncCallback<String>() { ...

Это вернет строку вместо JavaScriptObject. Вы можете использовать затем использовать JSONParser, как это:

JSONObject value = (JSONObject)JSONParser.parseStrict(jsonString);

Person person = new Person();
person.setName(value.get("Name").isString().stringValue());
...