2017-04-18 101 views
0

基本上这里我使用url连接来连接到php,一切都是工作在登录和注册阶段找到,现在我想获取我在php文件中创建的json对象,然后显示它在字符串视图中,所以任何人都有这个想法?将json对象转换为字符串并显示

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_display); 

    dataField = (TextView) findViewById(R.id.data); 
    btnDis = (Button) findViewById(R.id.btnClick); 




    btnDis.setOnClickListener (new View.OnClickListener(){ 
     @Override 
     public void onClick(View v){ 

      strUrl ="http://10.0.2.2/android/display.php"; 

      new jsonParse().execute(); 
     } 
    }); 
} 




public class jsonParse extends AsyncTask<String, String, String>{ 
    @Override 
    protected void onPreExecute() { 

     super.onPreExecute(); 

    } 

    @Override 
    protected void onPostExecute(String s) { 

     Toast.makeText(EditActivity.this,""+result,Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     try{ 
      URL url = new URL (strUrl); 
      HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
      con.setRequestMethod("POST"); 
      con.connect(); 

      //get response from server 
      BufferedReader bf = new BufferedReader(new InputStreamReader(con.getInputStream())); 
      String value = bf.readLine(); 
      System.out.println("result is"+value); 
      result = value; 

      String finalJson = bf.toString(); 
      JSONObject parentObject = new JSONObject(finalJson); 
      JSONArray parentArray = parentObject.getJSONArray("data"); 

      JSONObject finalObject= parentArray.getJSONObject(0); 
      String username = finalObject.getString("NAME"); 
      String age = finalObject.getString("AGE"); 
      String result = username +" - "+age; 
      return result; 
     } 


     catch(Exception e){ 
      System.out.println(e); 
     } 

     return null; 
    } 
} 

}

这里被称为我的PHP文件Display.php的

<?php 
require "conn.php"; 
require_once "global.php"; 



//get record from databases 
$query = "SELECT * FROM user"; 
if($result = mysqli_query($conn, $query)){ 
    // printf("%d", mysqli_num_rows($result)); 

if(mysqli_num_rows($result) > 0){ 
    $status = 'true'; 
    $message = 'data retrieved successfully'; 
     while($row = mysqli_fetch_assoc($result)){ 
     $name = $row['name']; 
     $age = $row['age']; 
     $username = $row['username']; 


     // echo $name."\n\n"; 
     // echo $age."\n\n"; 
     // echo $username."\n\n"; 

     $data .= '{"NAME" : "'.$name.'", "AGE" : "'.$age.'", "USERNAME" : "'.$username.'"},'; 
     } 

}else{ 
    $status = 'false'; 
    $message = 'data retrieved failed'; 
    $data = ''; 
} 

mysqli_free_result($result); 
mysqli_close($conn); 
}else{ 
    $message = mysqli_error($conn); 
} 
$output = '{"status": "'.$status.'","message":"'.$message.'", "data": ['.rtrim($data, ',').']}'; 
echo $output; 

?> 
+0

创建一个POJO类,像这样

class BaseClass { Boolean status; String message; String data; RowClass row; public Boolean getStatus() { return status; } public String getMessage() { return message; } public String getData() { return data; } public RowClass getRow() { return row; } class RowClass { String name; String username; int age; String data; public String getName() { return name; } public String getUsername() { return username; } public int getAge() { return age; } public String getData() { return data; } } } 

,然后检索数据你想从finalObject提取值? –

+0

@PardeepDogra即时通讯不知道这是否是一个好方法,我只是尝试任何可能的方法,因为我不知道,你的意见如何? –

+0

如果你想打印日志猫然后只需添加jsonObject.toString();在日志 – CrazyMind

回答

0

您可以使用Java库GSON https://github.com/google/gson

到JSON格式转换成Java String.class写:回调进来onPostExecute

String str = gson.fromJson("\"abc\"", String.class); 
0

后,字符串参数可以是键值对。因此,要字符串转换为JSONObject的使用 -

@Override 
protected void onPostExecute(String s) { 
try { 
     JSONObject jsonObject = new JSONObject(s); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 
0
  1. 您可以使用

    dataField.setText(结果);

上onPostExecute()

  • 对于容易地从远程可以使用POJO类的概念访问数据。
  • 首先由

    BaseClass jsonObject = new BaseClass(); 
    jsonObject = gson.fromJson(finalJson, BaseClass.class); 
    
    +0

    是用户库gson必须的吗? –

    +0

    您可以查看此链接http://www.vogella.com/tutorials/JavaLibrary-Gson/article.html –