Строка JSON не анализируется

#java #android #json

#java #Android #json

Вопрос:

Я хочу проанализировать строку JSON:

MyJsonString:

 {
  "status": "ok",
  "count": 2,
  "count_total": 9,
  "pages": 5,
  "posts": [
    {
      "id": 432,
      "type": "post",
      "title": "Title 1"
    },
    {
      "id": 434,
      "type": "post",
      "title": "Title 2"
    }
  ]
}
  

Я прошел через:

http://www.androidcompetencycenter.com/2009/10/json-parsing-in-android/

http://p-xr.com/android-tutorial-how-to-parse-read-json-data-into-a-android-listview/

Примеры работают нормально, но для этого я отредактировал строку JSON, чтобы сделать ее строкой Java.

Пример: строка JSON:

 {"menu": {
    "id": "file",
    "value": "File",
    "popup": {
    "menuitem": [
        {"value": "New", "onclick": "CreateNewDoc()"},
        {"value": "Open", "onclick": "OpenDoc()"},
        {"value": "Close", "onclick": "CloseDoc()"}
          ]
    }
}}
  

Я отредактировал, чтобы:

 String jsonStr = "{menu: {"   
        "id: file,"   
        "value: File,"   
        "popup: {"   
          "menuitem: ["   
            "{value: New, onclick: CreateNewDoc()},"   
            "{value: Open, onclick: OpenDoc()},"   
            "{value: Close, onclick: CloseDoc()}"   
          "]"   
        "}"   
      "}}"; 
  

Но когда я пытаюсь проанализировать эту myJsonString после соответствующего редактирования, чтобы она была действительной строкой Java, и запустить проект, он выдает мне предупреждение и не отображает всплывающее сообщение, которое выдает мне заголовки.

Logcat:

 10-19 18:36:45.972: WARN/System.err(1250): org.json.JSONException: Unterminated object at character 101 of { status :  ok ,count : 2,count_total : 9,pages : 5,posts : [{id : 432,type :  post ,title :  Title 1 ,},{id : 434,type :  post ,title :  Title 2 ,},]}
  

Я не знаю, где я делаю неправильно? Даже я понятия не имею, как программно преобразовать строку Json в допустимую строку Java?

Любая помощь приветствуется.

Редактировать:

    String jsonString="{" status :  ok ","count : 2","count_total : 9","pages : 5","posts" : [{" id" : "432","type": " post", "title" : " Title 1 "},{ "id ": "434",type :  post ,"title" : " Title 2"}]}";

JSONObject jsonObj = new JSONObject(jsonString);

            String status_value = jsonObj.getString("status");          

            Toast.makeText(context,"Status_value= " status_value, Toast.LENGTH_LONG).show();
  

Я попытался таким образом определить значение статуса.Но я не могу. Пожалуйста, помогите.

Комментарии:

1. Я не понимаю, почему вы отредактировали строку JSON, отредактированная версия для меня не похожа на допустимое форматирование JSON, поэтому, вероятно, вы получаете сообщение об ошибке.

2. Но в примере это работало. Я новичок в JSON, поэтому я начал с примера, и когда он сработал, я попытался аналогичным образом отредактировать свою строку JSON. Если я не должен редактировать строку JSON, как использовать ее с объектом Java String?

3. почему вы редактируете строку JSON? используйте как есть. используя объект JSON и массив JSON, получаем из него значение.

4. Как указывают оба ваших ответа, вы добавляете обратную косую черту, чтобы сделать ее допустимой строкой Java.

5. Мне удалось создать допустимую строку java из строки Json. Пожалуйста, проверьте редактирование. Тем не менее, я не получаю никакого ответа в Toast. В чем моя вина?

Ответ №1:

В вашем случае ответ на поступающий JSON не является действительным.

 "count": 2, which is not the correct way it should be in double quotes like this

"count": "2", same way for the rest of the response String also.
  

ОБНОВЛЕНО:

Вы указываете, что созданная вами jsonString неверна, просто замените мою строку и оформите заказ.

Первая строка

 String jsonString = "{"status": "ok","count": "2","count_total": "9","pages": "5","posts":"  
        "[{"id": "432","type": "post","title": "Title 1"},"  
        "{"id": "434","type": "post","title": "Title 2"}]}";
  

Вторая строка

 String jsonStr = "{"menu": {"id": "file","value": "File","popup": {"menuitem": "  
            "[{"value": "New", "onclick": "CreateNewDoc()"},{"value": "Open", "onclick": "OpenDoc()"},"  
            "{"value": "Close", "onclick": "CloseDoc()"}]}}}"; 
  

Комментарии:

1. Спасибо за ответ. если я поступлю таким образом, как это будет допустимая строка Java? Я имею в виду, что если сделать это «count»:»2″, выдает ошибку в «:».

2. Спасибо. Это действительно помогло мне создать правильную строку Json. Но все же я не получаю правильного ответа в Toast.

3. Вы создаете неправильную строку JSON, проверьте мой обновленный ответ. Я создал для вас строку JSON, которую вы хотите. Спасибо

Ответ №2:

Строка в вашем java-коде НЕ является допустимой строкой JSON. вы не заключаете строки в кавычки. попробуйте это:

  String example = "["a", "b", "c"]";
  

Это должно дать вам массив строк.