2015-01-30 4 views
-6

Я работаю с веб-сервисами. Я хочу создать JSONObject и отправить значения через веб-службу. Заранее спасибо. Пожалуйста, дайте мне полный код, как это сделать.Как создать JSONObject в Android? [SOLVED]

String redeem = edit_messageredeem.getText().toString(); 
        HttpClient httpclient = new DefaultHttpClient(); 
        String httppostURL = "http:// ..."; 
         HttpPost httppost = new HttpPost(httppostURL); 
         Log.v(TAG, "postURL: " + httppost); 

           List<NameValuePair> data2 = new ArrayList<NameValuePair>(5); 
           data2.add(new BasicNameValuePair("merchant_id", "02")); 
           data2.add(new BasicNameValuePair("merchant_location_id", "03")); 
           data2.add(new BasicNameValuePair("user_id", "04")); 
           data2.add(new BasicNameValuePair("merchant_kiosk_id", "04")); 
           data2.add(new BasicNameValuePair("coupon_code", redeem)); 
           httppost.setHeader(HTTP.CONTENT_TYPE,"application/x-www-form-urlencoded;charset=UTF-8"); 
           httppost.setEntity(new UrlEncodedFormEntity(data2 , "UTF-8"));    
        //   httppost.setEntity(new UrlEncodedFormEntity(data)); 
        //   httpclient.execute(httppost);     
           HttpResponse response = httpclient.execute(httppost); 
           HttpEntity resEntity = response.getEntity(); 
           if (resEntity != null) {        
            String responseStr = EntityUtils.toString(resEntity).trim(); 
            Log.v(TAG, "Response: " + responseStr); 
            Log.i("TAG",""+response.getStatusLine().getStatusCode()); 
            Toast.makeText(RedeemActivity.this, responseStr, Toast.LENGTH_LONG).show(); 
            // you can add an if statement here and do other actions based on the response 
           }    
           edit_messageredeem.setText(""); //reset the message text field 
         //  Toast.makeText(getBaseContext(),"Sent",Toast.LENGTH_SHORT).show(); 
           Toast.makeText(RedeemActivity.this, "Data: " +data2,Toast.LENGTH_LONG).show(); 

         } catch (ClientProtocolException e) { 
          e.printStackTrace(); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } catch (Throwable t) { 
          Toast.makeText(RedeemActivity.this, "Request failed: " + t.toString(), 
            Toast.LENGTH_LONG).show(); 
         } 

       } 
} 
+3

, прежде чем просить другие для кода, пожалуйста, попробуйте первыми и убедитесь, что вы читали http://stackoverflow.com/help/how-to-ask –

+0

вы должны использовать print_r в php вместо json_encode для вашего массива данных –

ответ

1

Создание объект JSon

JSONObject obj = new JSONObject(); 

добавление значений в объект json

obj.put("key", "your_value"); 

смотрите этот answer

EDITED

Это может быть помочь вам

JSONArray array = new JSONArray(); 
array.put(obj); 
JSONObject par_obj= new JSONObject(); 
par_obj.put("data",array); 
+0

Следующее - это то, что я получаю как вывод. Массив ( [merchant_id] => 02 [merchant_location_id] => 03 [user_id] => 04 [merchant_kiosk_id] => 04 [subscriber_phone] => 999-999-9999 ) Но вместо того, чтобы это я хочу вывод следующим образом: { "данные": [ { [merchant_id] => 02 [merchant_location_id] => 03 [user_id] => 04 [merchant_kiosk_id] => 04 [subscriber_phone] => 999-999-9999 } ] } – Priyasha

0

Если вы хотите convet любой объект JSONObcjet Скачать GSON банку затем конвертировать как

Gson gson=new Gson(); 
gson.toJson(Your object that which you want to convert); 

Я надеюсь, что это одна поможет вам :)

+0

Помогает ли вам это? – user3515851

+0

https://code.google.com/p/google-gson/downloads/detail?name=google-gson-2.2.4-release.zip& здесь говорится, что он устарел. На самом деле я должен создать массив json и отправить его по почте. Я много пробовал, но не мог заставить его работать. – Priyasha

+0

Я не знаю, почему они ставятся как deprecated.but Это все еще работает. Просто используйте это. Конечно, эта помощь вам :) – user3515851

0

Вот мой сервер код сторона:

@Path("chat") 
public class Chat { 

Statement statement; 
Gson gson=new Gson(); 



@Path("/getPrevious") 
@GET 
public String getPreviousChat(@QueryParam("senderId")String senderId, 
       @QueryParam("receiverId")String receiverId){ 

    ChatDataList list=new ChatDataList(); 
    ArrayList<ChatData> datas=new ArrayList<ChatData>(); 

    try { 
     statement=DBConn.getConnection(); 
     ResultSet rs=statement.executeQuery("select * from chat where sender_id="+senderId 
       +" AND receiver_id="+receiverId+" ORDER BY id DESC limit 50"); 
     while (rs.next()) { 
      ChatData data=new ChatData(); 
      data.setSenderId(rs.getInt("sender_id")); 
      data.setReceiverId(rs.getInt("receiver_id")); 
      data.setMsg(rs.getString("msg")); 
      datas.add(data); 
     } 
     list.setChatList(datas); 

    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
    return gson.toJson(list); 
} 

}

Здесь я получаю значение из базы данных и отправить JSON, как String.It работает удивительным, чтобы проверить это me.Just :)

0

вы получаете единый data.You следует добавить в array.For ех:

List<Your Data Class> data=new ArrayList<Your Data Class>(); 

и добавьте свой результат в данные. затем преобразовать эти данные в качестве jsonObject.like

Gson gson=new Gson(); gson.toJson(data);

Это будет печатать, как ваши ожидания :)

+0

Как добавить результат в данные? Я получаю ошибку. Спасибо bdw за вашу помощь. – Priyasha

+0

Я сделал это: String [] mStringArray = new String [data.size()]; mStringArray = data.toArray (mStringArray); for (int i = 0; i Priyasha

+0

вы должны использовать класс pojo в списке. используйте класс POJO :) – user3515851

Смежные вопросы