2016-10-13 6 views
1

APIからのデータをアンドロイドにフェッチするときに[]角括弧で出力を取得していますが、[]アウトこの..私はjsonでmysqlからデータを取得するときこの "[]"の下に出力を得ます

からアンドロイドスタジオでの出力は、[2]のようですが、私は出力がここ

"2" のような私main.java

package com.example.sachin.splashlogin; 

import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v7.widget.CardView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

import org.apache.http.NameValuePair; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONArray; 
import org.json.JSONObject; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

public class Home extends Fragment { 
    Activity activity; 

    public Home() {}; 

    TextView visit; 
    SessionManager session; 
    CardView cardviewvisit, cardvieworder, cardviewpayment, cardviewdelivery; 
    JSONObject jsonobject; 
    private static String url_visitor = "http://10.0.2.2/portal/fetchvisit.php"; 
    JSONParser jParser = new JSONParser(); 
    JSONArray ownerObj, jsonarray; 

    ArrayList<HashMap<String, String>> arraylist; 
    ArrayList<String> v_username = new ArrayList<String>(); 
    ArrayList<String> v_parties1 = new ArrayList<String>(); 
    ArrayList<String> v_date = new ArrayList<String>(); 
    String suid, uid, wt_wod_code1, wt_party1; 
    View view; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.activity_home, container, false); 
     getActivity().setTitle("Home"); 
     cardviewvisit = (CardView) view.findViewById(R.id.cardviewvisit); 
     cardvieworder = (CardView) view.findViewById(R.id.cardvieworder); 
     cardviewpayment = (CardView) view.findViewById(R.id.cardviewpayment); 
     cardviewdelivery = (CardView) view.findViewById(R.id.cardviewdelivery); 
     session = new SessionManager(getActivity()); 
     HashMap<String, String> user = session.getUserDetails(); 
     uid = user.get(SessionManager.KEY_ID); 
     visit = (TextView) view.findViewById(R.id.visit1); 
     cardviewvisit.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       Fragment fragment = new DeliveryTab(); 
       FragmentManager fragmentManager = getFragmentManager(); 
       fragmentManager.beginTransaction().replace(R.id.framelayout, fragment).commit(); 

      } 
     }); 

     new DownloadJSON().execute(); 
     return view; 
    } 


    private class DownloadJSON extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected Void doInBackground(Void... args) { 

      // Create an array 
      try { 
       arraylist = new ArrayList<HashMap<String, String>>(); 

       List<NameValuePair> params = new ArrayList<NameValuePair>(); 
       params.add(new BasicNameValuePair("v_username", uid)); 

       JSONObject json = jParser.makeHttpRequest(url_visitor, "GET", params); 

        ownerObj = json.getJSONArray("visit"); 
        for (int i = 0; i < ownerObj.length(); i++) { 
         jsonobject = ownerObj.getJSONObject(i); 
         v_parties1.add(jsonobject.getString("visit")); 
        } 
      } catch (Exception e) { 
      } 

      return null; 
     } 
     @Override 
     protected void onPostExecute(Void args) { 
      visit.setText("v_parties1"); 
     } 
    } 
} 
たい

ここに私のAPI: -

ここ
<?php 

    //here i posted the query 
     $count = "100"; 
if ($count > 0) {  
      $response["visit"] = array(); 
      $visit["todayvisit"]=$count; 
      // push single product into final response array 
      array_push($response["visit"], $visit); 
      $response["success"] = 1; 
      echo json_encode($response);   else 
      { 
      $response["success"] = 0; 
      $response["message"] = "No Visit found"; 
      // echo no users JSON 
      echo json_encode($response); 
     } 


    ?> 

ブラウザでの出力: -

{"visit":[{"todayvisit":2}],"success":1} 

出力は常に角括弧[]で来る..私を助けてください。

+0

それらの括弧「[]」.. – Jimmmy

+0

あなたはJSONデータを確認しました、むしろ一つの要素よりも、あなたは配列OD要素を持っていることを示していますか? JSONファイルに "[]"が含まれている可能性がありますか? – Darshan

答えて

0

ない

array_push($response["visit"], $visit); 

しかし:

$response["visit"] = $visit; 
+0

ブラウザでは角括弧は消えていますが、この同じプログラムをAndroidで実行すると角括弧しか表示されません。 –

1

01を訪問した場合、below-

$response = array(#Initialize the response array 
    'visit'=>array(
     'todayvisit'=>0 
    ), 
    'success'=>0, 
    'message'=>'No Visit found' 
); 

$count = "100"; #Assign your visited/query data here 

if ($count > 0) {  
    $response['visit']['todayvisit'] = $count; 
    $response["success"] = 1; 
    $response["message"] = "Visit found"; 
} 

echo json_encode($response); 

出力のようなあなたのコードを更新

{"visit":{"todayvisit":"100"},"success":1,"message":"Visit found"} 

出力、

{"visit":{"todayvisit":0},"success":0,"message":"No Visit found"} 

注訪れていない場合:訪問が見つからない場合は今、あなたのコードは、デフォルトJSONデータを返しますが。だから、あなただけ2または0のような値が必要な場合else条件

別の回答

をチェックする必要はありません。その後、JSONフォーマットを作る必要はありません。あなたのPHPコードからちょうど、below-

$count = '100'; #query from Database and assign visited count 
echo $count; 

そして、あなたのAndroidのコードのように同じようGET文字列データを使用します。 jsonパーサを使う必要はありません。 ちょうどGET文字列のみ。このコードについては

+0

角かっこは消えてしまいましたが、アンドロイドではありません –

+0

{"visit":[{"todayvisit":2}]、 "success":1} format? @ user6880336 –

+0

いいえ値を欲しいです.. –

0

のみ

$count = "100"; 
    if ($count > 0) {  
       $response = array(); 
       $visit["todayvisit"]=$count; 
       // push single product into final response array 
       $response["visit"] = $visit; 
       //array_push($response, $visit); 
       $response["success"] = 1; 
       echo json_encode($response); 
       }   
       else 
       { 
       $response["success"] = 0; 
       $response["message"] = "No Visit found"; 
       // echo no users JSON 
       echo json_encode($response); 
      } 
関連する問題