Ответы пользователя по тегу Java
  • Java: Почему не получается обработать JSON?

    @Eserchik
    Для начала тебе нужно точно знать что тебе возвращает сервер, для этого можно например установить расширение для Chrome - Postman REST CLIENT(сформировать в нем свой запрос и посмотреть какую json структуру он возвращает).
    В своем коде ты не передаешь серверу какие либо данные, у тебя конструкция:
    ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();
    -пустая. Ты отправляешь тока некий пустой заголовок. Должно быть так например:
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
    	        nameValuePairs.add(new BasicNameValuePair("grant_type", "password"));
    	        nameValuePairs.add(new BasicNameValuePair("password", pass));
    	        nameValuePairs.add(new BasicNameValuePair("username", login));
    	        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));


    Json ответ может быть простой:
    {
        "name": "Иванов Сергей",
        "phone": "89651102121"
    }

    Тогда вот:
    if(result != null){
    				
    	  			try{
    	  				final JSONArray jArray = new JSONArray(result);
    	  	               
    	  				   for(int i=0;i<jArray.length();i++) 
    	  				      {
    	  					     JSONObject json_data = jArray.getJSONObject(i);
    	  					
    	  					  String  name = json_data.getString("name");
    	  					  String phone =json_data.getString("phone");
    	  				
    	  	                  }
    	  	          }catch(JSONException e1){
    	  				         Log.d(LOG_TAG,"Ошибка Json Parse: "+e1.toString());
    	  			    }
    	  			
    	  		}


    А может Json быть сложным

    {
       "Status":{
          "Name":"Подтверждена",
          "Id":2
       },
       "Description":"Описание",
       "WorkCategory":{
          "Name":"Электрика",
          "Id":1
       },
       "OrderedAt":"2014-07-04T11:00:00.000Z",
       "ClientName":"ФИО",
       "ClientAddress":"Адрес",
       "ClientPhone":"89651101010",
       "ServiceComment":"Ваш комментарий",
       "City":{
          "Name":"Москва",
          "Id":1
       },
       "Title":"Название заявки"
    }


    Тогда надо делать так:
    if(result != null){
    	  
    
    	  try{
          
    	  	        JSONObject jObject = new JSONObject(result);
                            JSONArray myValue = jObject.getJSONArray("value");
    	  				
    
    	  				
    	  				
    	  		for (int i = 0; i < myValue.length(); i++) {
                            JSONObject c = myValue.getJSONObject(i);
                             
                            //Категория работ
                            JSONObject WorkCategoryObj = c.getJSONObject("WorkCategory");
                            String WorkCategory =WorkCategoryObj.getString("Name");
                            
                            //Город
                            JSONObject CityObj = c.getJSONObject("City");
                            String City =CityObj.getString("Name");
                            
                            //Статус
                            JSONObject StatusObj = c.getJSONObject("Status");
                            String Status =StatusObj.getString("Name");
                            
                            //Содержимое заявки
                            String Id = c.getString("Id");
                            String Num = c.getString("Num");
                            String Title = c.getString("Title");
                            String Description = c.getString("Description");
                            String CreatedAt = c.getString("CreatedAt");
                            String ArrivedAt = c.getString("ArrivedAt");
                            String OrderedAt = c.getString("OrderedAt");
                            String CompletedAt = c.getString("CompletedAt");
                            String ServiceComment = c.getString("ServiceComment");
                            String WorkerComment = c.getString("WorkerComment");
                            String ClientName = c.getString("ClientName");
                            String ClientAddress = c.getString("ClientAddress");
                            String ClientPhone = c.getString("ClientPhone");
                            String ClientComment = c.getString("ClientComment");
                            
    
    	  				}
    	  				
    	  				
    	  		
     			    }
    	  			catch(JSONException e1){
    				         Log.d(LOG_TAG,"Ошибка Json Parse: "+e1.toString());
    			    }
    Ответ написан