【问题标题】:convert json object to string and display将json对象转换为字符串并显示
【发布时间】:2017-09-13 18:22:42
【问题描述】:

基本上这里我使用 url 连接来连接到 php,一切都在登录和注册阶段找到,现在我想获取我在 php 文件中创建的 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;
    }
}

}

这是我的名为 display.php 的 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;

?>

【问题讨论】:

  • 是否要从 finalObject 中提取值?
  • @PardeepDogra 我不确定这是否是一个好方法,我只是尝试任何可能的方法,因为我不知道,你的意见如何?
  • 如果你想打印日志猫,那么只需添加 jsonObject.toString();在日志中

标签: java php android json


【解决方案1】:

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

将 json 格式转换为 java String.class 写入:

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

【讨论】:

    【解决方案2】:

    回调进来 onPostExecute 后,String 参数可能在键值对中。所以要将 String 转换为 JsonObject 使用 -

    @Override
    protected void onPostExecute(String s) {
     try {
            JSONObject jsonObject = new JSONObject(s);
        } catch (JSONException e) {
            e.printStackTrace();
         }
    }
    

    【讨论】:

      【解决方案3】:
      1. 你可以使用

        dataField.setText(结果);

      onPostExecute()

      1. 为了方便地从远程访问您的数据,您可以使用 POJO 类的概念。

      首先像这样创建一个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;
              }
          }
      }
      

      然后通过

      检索数据
      BaseClass jsonObject = new BaseClass();
      jsonObject = gson.fromJson(finalJson, BaseClass.class);
      

      【讨论】:

      【解决方案4】:
      private static String jsonToString(final Object obj) {
          String result;
          try {
              final ObjectMapper mapper = new ObjectMapper();
              final String jsonContent = mapper.writeValueAsString(obj);
              result = jsonContent;
          } catch (JsonProcessingException e) {
              result = "JSON Parsing error";
          }
          return result;
      }
      

      【讨论】:

        猜你喜欢
        • 2019-12-22
        • 1970-01-01
        • 2019-08-27
        • 2020-05-27
        • 1970-01-01
        • 1970-01-01
        • 2011-04-23
        • 2012-06-14
        • 2012-02-20
        相关资源
        最近更新 更多