Ошибка при разборе строки Json Android

Я получаю разбор Json

Вот мой код Java

    if(jsonstr!=null){
    try{
        JSONObject   jsonResponse = new JSONObject(jsonstr);

      /***** Returns the value mapped by name if it exists and is a JSONArray. ***/
      /*******  Returns null otherwise.  *******/
      JSONArray jsonproduct = jsonResponse.optJSONArray("products");

      /*********** Process each JSON Node ************/

      int lengthJsonArr = jsonproduct.length();  
      for (int i = 0; i < lengthJsonArr; i++) {
          JSONObject c = jsonproduct.getJSONObject(i);
          itemcode.add(c.get("Code").toString());
          item.add(c.get("Name").toString());
          quantity.add("");
          category.add("CategoryCode");


      }

Ошибка

org.json.JSONException: Value [{"Categories":[{......................all json}]

Мой JSON как

[{category {["a": "s" "b": "g"}, {"a": "s" "b": "g"}]},

product {["a": "s" "b": "g"}, {"a": "s" "b": "g"}]}]

URL веб-службы MY Json [веб-сервис][1]

Пожалуйста, помогите мне, как я могу решить эту проблему Спасибо заранее

7 ответов

Решение

Попробуй это,

if(jsonstr!=null){
    try{
        JSONArray   jsonResponse = new JSONArray(jsonstr);

 JSONObject   jsonResponse = jsonResponse.get(0);


      /***** Returns the value mapped by name if it exists and is a JSONArray. ***/
      /*******  Returns null otherwise.  *******/
      JSONArray jsonproduct = jsonResponse.getJSONArray("products");

      /*********** Process each JSON Node ************/

      int lengthJsonArr = jsonproduct.length();  
      for (int i = 0; i < lengthJsonArr; i++) {
          JSONObject c = jsonproduct.getJSONObject(i);
          itemcode.add(c.get("Code").toString());
          item.add(c.get("Name").toString());
          quantity.add("");
          category.add("CategoryCode");


      }

Попробуй это:

замещать products в categories

try{
    JSONObject   jsonResponse = new JSONObject(jsonstr);

  /***** Returns the value mapped by name if it exists and is a JSONArray. ***/
  /*******  Returns null otherwise.  *******/
  JSONArray jsonproduct = jsonResponse.optJSONArray("categories");

  /*********** Process each JSON Node ************/

  int lengthJsonArr = jsonproduct.length();  
  for (int i = 0; i < lengthJsonArr; i++) {
      JSONObject c = jsonproduct.getJSONObject(i);
      itemcode.add(c.get("Code").toString());
      item.add(c.get("Name").toString());
      quantity.add("");
      category.add("CategoryCode");


  }

Ваш JSON недействителен.

Вы можете использовать онлайн-инструмент для проверки: http://json.parser.online.fr/

Ссылка для синтаксиса JSON: http://www.w3schools.com/json/json_syntax.asp

РЕДАКТИРОВАТЬ: Хорошо, теперь у нас есть ваш настоящий JSON, это правильно.

Как насчет замены JSONObject от JSONArray, Потому что ваш JSON является Array,

Ваш JSON недействителен.

Может быть, вы собираетесь что-то подобное?

{
    "categories": [
        {
            "a": "s",
            "b": "g"
        },
        {
            "a": "s",
            "b": "g"
        }
    ],
    "product": [
        {
            "a": "s",
            "b": "g"
        },
        {
            "a": "s",
            "b": "g"
        }
    ]
}

Это происходит потому, что ваш JSON начинается с jsonArray тогда почему вы берете jsonObject для этого

[
    {
        "categories": [
            {
                "Code": "1001",
                "Name": "ROOM LINEN",
                "ShortName": "ROLN",
                "DivisionCode": "10",
                "SequenceNo": "3"

Вы должны попробовать код @akash moradiya, учитывая, что он указывает правильный путь.

Это потому, что используемый вами json недействителен. и анализ, который вы делаете, тоже недействителен

Вот хорошая ссылка, чтобы начать с разбора Android JSON

http://www.androidhive.info/2012/01/android-json-parsing-tutorial/

Попробуй это..

  JSONArray jsonarray = new JSONArray(jsonstr);

  JSONObject jsonResponse = jsonarray.getJSONObject(1);
  JSONArray jsonproduct = jsonResponse.getJSONArray("products");

  for (int i = 0; i < jsonproduct.length(); i++) {
      JSONObject c = jsonproduct.getJSONObject(i);
      itemcode.add(c.getString("Code"));
      item.add(c.getString("Name"));
      quantity.add("");
      category.add("CategoryCode");
  }
Другие вопросы по тегам