2016-07-24 10 views
0

私はPHPを使用してサーバーからAndroidアプリケーションにデータを送信します。コードは、PHPで任意のエラーを実行するが、私はjsonを解析することはできませんアンドロイドのアプリケーションでエラーが発生します。私は、JSONを惹起し、http://json.parser.online.fr/にそれをTOKE、それがにSyntaxError私を示していますJSONで予期しないトークン位置0エラー では、これは私のPHPコードです:カンツを解析しJSONで予期しないトークンを取得する

function selectAll($cnn) 
{ 
    $query="SELECT * FROM user"; 
    $stmt=$cnn->prepare($query); 
    $stmt->execute(); 

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 

    $result[]=$row; 

    } 
    return $result; 
    } 
echo(json_encode(array('result' => $arr))); 

and This is my json data that generated with php

もちろん、これは私のアンドロイドコードです:あなたは、この行を変更する必要があり

public class ManageUser extends AppCompatActivity implements RecyclerItemClickListener.OnItemClickListener { 
    RecyclerView recyclerView; 
    ProgressBar progressBar; 
    List<user> listOfUser=new ArrayList<>(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_manage_user); 
     progressBar=(ProgressBar)findViewById(R.id.UserProgress); 
     recyclerView=(RecyclerView)findViewById(R.id.recviewUser); 
     recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(this,this)); 
     SelectAllUserNetworkTask GetAllUser=new SelectAllUserNetworkTask(this); 
     GetAllUser.execute(); 
    } 

    @Override 
    public void onItemClick(View childView, int position) { 
     Toast.makeText(this,"Clicked trigger",Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onItemLongPress(View childView, int position) { 
     Toast.makeText(this,"LongPress",Toast.LENGTH_SHORT).show(); 
    } 

    public class SelectAllUserNetworkTask extends AsyncTask { 

     Context myContext; 
     List<user> productarray =new ArrayList<>(); 
     private OkHttpClient client=new OkHttpClient(); 
     public String Result; 
     public SelectAllUserNetworkTask(Context context) 
     { 
      this.myContext=context; 
     } 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      progressBar.setVisibility(View.VISIBLE); 
     } 

     @Override 
     protected Object doInBackground(Object[] params) { 
      try { 
       RequestBody requestBody; 
       requestBody = new MultipartBody.Builder() 
         .setType(MultipartBody.FORM) 
         .addFormDataPart("action","select") 

         .build(); 

       Request request = new Request.Builder() 
         .url(Tags.UserAddress) 
         .post(requestBody) 
         .build(); 

       Response response = client.newCall(request).execute(); 

       Result=response.body().string().toString(); 
       String str=Result.substring(Result.indexOf("{"), Result.lastIndexOf("}")); 
       JSONObject jsonObject=new JSONObject(str); 

       JSONArray jsonArray = jsonObject.getJSONArray("result"); 

       for (int i=0;i<jsonArray.length();i++) { 
        JSONObject jobject = jsonArray.getJSONObject(i); 
        user myUser =new user(); 

        myUser.setUsId(jobject.getInt("id")); 
        myUser.setName(jobject.getString("name")); 
        myUser.setLastName(jobject.getString("lastname")); 
        myUser.setEmail(jobject.getString("email")); 
        myUser.setPassword(jobject.getString("password")); 
        myUser.setImage(jobject.getString("image")); 
        myUser.setGender(jobject.getString("gender")); 
        myUser.setBirthDay(jobject.getString("birthday")); 
        myUser.setFavFilm(jobject.getString("favFilm")); 
        myUser.setFavColor(jobject.getString("favColor")); 
        myUser.setAboutMe(jobject.getString("aboutme")); 
        myUser.setAdmin(jobject.getInt("admin")); 
        productarray.add(myUser); 
       } 
       /* Type typeList=new TypeToken<List<ModelProduct>>(){}.getType(); 
       productarray=new Gson().fromJson(jsonObject.getString("result"),typeList);*/ 

       listOfUser = productarray; 
       return productarray; 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 


      return null; 
     } 

     @Override 
     protected void onPostExecute(Object o) { 
      super.onPostExecute(o); 
      progressBar.setVisibility(View.GONE); 
      recyclerView.setHasFixedSize(true); 
      LinearLayoutManager llm = new LinearLayoutManager(myContext); 
      llm.setOrientation(LinearLayoutManager.VERTICAL); 
      recyclerView.setLayoutManager(llm); 

      UserAdapter ca=new UserAdapter(listOfUser,myContext); 
      recyclerView.setAdapter(ca); 
     } 
    } 
} 
+0

PHPコードは関係ありません.JSONオブジェクトを解析するためのAndroidコードは何ですか? – player87

答えて

1

echo(json_encode(array($arr))); 

あなたは、解析中に結果をアクセスしているし、それがPHPであっ

+0

私はそれを変更しましたが、私はまだこの行のアンドロイドで例外を取得します。JSONObject jsonObject = new JSONObject(Result); – AndroidDev

0

最初のものではありませんので、

echo(json_encode(array('result'=>$arr))); 

に、あなたのJSONResponseはJSONArrayなくJSONObjectの形態です。したがって、レスポンスをJSONArrayにキャストすると、解析エラーが発生します。

第2に、取得しているJSONレスポンスに「結果」が表示されません。

$result = mysqli_query($connection,"SELECT * FROM Students"); 
$output = array(); 
while($row = mysqli_fetch_array($result)){ 
$record = array(); 
$record['id'] = $row['Id']; 
$record['name'] = $row['Name']; 
$record['phone'] = $row['Phone']; 
$output[] = $record; 

} エコーjson_encode($出力);:

+0

JSONObjectで例外が発生するjsonObject = new JSONObject(Result);代わりに何をしなければならないのですか?私はこれが文字列であることを知っているので、JSONObjectを変換するには – AndroidDev

+0

また、json配列形式を処理するためにこのメソッドを実行してみると、それ以前に私のために働いていた。 – AndroidDev

+0

JSONArray jsonArray = new JSONArray(response); "response"は、そのAPIメソッドを呼び出した後にサーバーから受け取った文字列です。 – SWAT

0

あなたはこのコードを使用することができます

とAndroid側で:

  String res ; 
      JSONObject jsonObject=new JSONObject(res); 
      JSONArray jsonArray = jsonObject.getJSONArray("result"); 
      for (int i=0;i<jsonArray.length();i++) { 
       JSONObject jobject = jsonArray.getJSONObject(i); 
       user myUser =new user(); 
       myUser.setUsId(jobject.getInt("id")); 
       myUser.setName(jobject.getString("name")); 
       myUser.setAdmin(jobject.getInt("phone")); 
       productarray.add(myUser); 
      } 

私はあなたのためにこの作品を願っています。

関連する問題