2013-08-01 3 views
0

Я constructiong в JSONObject в моих JavaScript, а затем отправить его в виде строки в мой сервлет, используя этот код:Невозможно преобразовать JSON строку в объект

insertDtls = function() { 
        var jsonObj = []; 
        jsonObj.push({location: this.location()}); 
        jsonObj.push({value: this.value()}); 
        jsonObj.push({coverage: this.coverage()}); 
        jsonObj.push({validPeriod: this.collateralValidPer()}); 
        jsonObj.push({description: this.description()}); 

        var b = JSON.stringify(jsonObj); 
        console.log(b.toString()); 

        $.ajax({ 
          url:"/HDSWFHub/AppProxy", 
          type: 'GET', 
          data: $.extend({WrJOB: "insertDtls", mainData: b}, tJS.getCommonPostData()), 
          dataType: "json", 
          success: function(responseText, status, xhr){ 
               updateViewModel(responseText); 
              }, 
          error: function(jqXHR, textStatus, error){ 
               tJS.manageError(jqXHR); 
              } 
       }); 
}, 

Строка выглядит следующим образом: [{"location":"Boston"},{"value":"5"},{"coverage":"15"},{"validPeriod":"08/05/2013"},{"description":"test description"}] и сервлет получает его без проблем.

Тогда я получаю это в моем сервлета:

String step = request.getParameter("mainData"); 

      JSONObject jsonObj = new JSONObject(); 
      final JSONObject obj = new JSONObject(); 
      System.out.println(step); 
      try { 
       obj.put("viewModel", "index"); 
       obj.put("WrSESSIONTICKET", sessionTicket); 
       response.getWriter().print(obj.toString()); 
      } catch (final Exception e) { 
       logException(request, response, e, true); 
      } 

Я пытаюсь преобразовать строку JSON обратно на объект в сервлет для того, чтобы быть в состоянии петли корыта элементы, или получить нужный. Библиотека я использую org.json

Я устал:

JSONObject jsonObj = new JSONObject(step); 

без какого-либо успеха. Только что получил эту ошибку: Unhandled exception type JSONException Я не знаю, что происходит. Может быть, я уже слишком устал. Я уверен, что мне не хватает чего-то очень маленького, но я не могу это определить.

Я знаю, что его спрашивали сотни раз. Я знаю, что я получу тонны downvotes, но я не смог найти ответ на мой вопрос.

+0

вы сказали, что вы пытались 'JSONObject jsonObj = новый JSONObject (шаг),' но я не вижу его в коде! – Multithreader

+0

Потому что он не работает. :) Это ошибка: 'Необработанный тип исключения JSONException' – Slim

+0

Распечатайте переменную' step' в сервлете и посмотрите, является ли она правильной строкой JSON. Пожалуйста, опубликуйте его, чтобы мы могли его просмотреть;) – Multithreader

ответ

1

Я попробовал строку, которую вы опубликовали в своем комментарии, и она отлично работает. Вот полный код:

import org.json.JSONArray; 
import org.json.JSONException; 

public class jsonArray { 
    public static void main(String[] args) { 
     String text = "[{\"location\":\"Boston\"},{\"value\":\"5\"},{\"coverage\":\"15\"},{\"validPeriod\":\"08/05/2013\"},{\"description\":\"test description\"}]"; 

     try { 
      JSONArray jsonArray = new JSONArray(text); 
      System.out.println(jsonArray.toString()); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

p.s. Я использую библиотеку org.json-20120521.jar

+0

отлично, но у вас что-то ускользало. Я получаю строку из javascript с помощью ajax. – Slim

+0

Добавьте код json внутри 'try {...} catch (JSONException e) {...}' – Multithreader

+0

Хорошо, я понял.Я не могу поверить в то, как застрял мой мозг. Спасибо, что помогли мне! – Slim

1

Здесь ваша строка json преобразуется в JSONObject.

В вашем случае его не происходит, потому что [] скобки обозначают Array. так что сначала это Array, а затем {} JSONObject в случае вашей строки.

import org.json.JSONArray; 
import org.json.JSONObject; 

public class Test { 

    static String str = "[{\"location\":\"Boston\"},{\"value\":\"5\"},{\"coverage\":\"15\"},{\"validPeriod\":\"08/05/2013\"},{\"description\":\"test description\"}]"; 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     try { 
     JSONArray jsonArr = new JSONArray(str); 
     System.out.println("JSON ARRAY IS : "); 
     System.out.println(jsonArr.toString()); 
      for(int i =0 ; i<jsonArr.length() ;i++){ 
       JSONObject jsonObj = jsonArr.getJSONObject(i); 
       System.out.println(); 
       System.out.println(i+" JSON OBJECT IS : "); 
       System.out.println(jsonObj.toString()); 

      } 
    } catch (org.json.JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    } 
} 

ВЫВОД

JSON ARRAY IS : 
[{"location":"Boston"},{"value":"5"},{"coverage":"15"},{"validPeriod":"08/05/2013"},{"description":"test description"}] 

0 JSON OBJECT IS : 
{"location":"Boston"} 

1 JSON OBJECT IS : 
{"value":"5"} 

2 JSON OBJECT IS : 
{"coverage":"15"} 

3 JSON OBJECT IS : 
{"validPeriod":"08/05/2013"} 

4 JSON OBJECT IS : 
{"description":"test description"} 
Смежные вопросы