2015-10-29 2 views
0

У меня есть следующий файл php, отлично работающий на веб-хосте.Как преобразовать вывод PHP в анализируемые данные через JSON

<?php 
    $dbhost = 'dbhost'; 
    $dbuser = 'dbuser'; 
    $dbpass = 'pass'; 

    $conn = mysql_connect($dbhost, $dbuser, $dbpass); 

    if(! $conn) 
    { 
     die('Could not connect'.mysql_error()); 
    } 

    $sql = "SELECT FIELD1, FIELD2, FIELD3, FIELD4 FROM `TABLE` WHERE FIELD1 =  'VALUE1' "; 
    mysql_select_db('MyDB'); 
    $retval = mysql_query($sql, $conn); 

    if(! $retval) 
    { 
     die('Could not get data: ' . mysql_error()); 
    } 

    while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) 
    { 
     echo "FIELD1" :{$row['FIELD1']} <br> ". 
     "FIELD2 : {$row['FIELD2']} <br> ". 
     "FIELD3 : {$row['FIELD3']} <br> "; 
     $output[] = $row; 
    } 

    print(json_encode($row)); 
    mysql_close($conn); 
?> 

Ссылка здесь http://marcodr.byethost7.com/TP2.php

Теперь я хотел бы показать это содержание в TextView и я unseccessfully используя следующий код

JSONObject object=getJSONObject(“result”); //comes from the  print(json_encode ($result)); 
JSONArray arr=object.getJSONArray(“Value1”); //transforms the object Value1 in array 
for(int i=0;i<arr.length;i++){ 
JSONObject obj1=arr.getJSONObject(i); 
String Value1=obj1.getString("Value1"); 
TextView.setText(Value1); //set TextView’s content to the String Value1 
} 

манифеста имеет разрешение для навигации в Интернете , текстовое представление находится в макете и т. д., но STILL Я не могу поместить вывод PHP в TextView. Что не так в моем коде?

+0

, потому что вы не выводить JSON. вы выводите текст отладки ** AND ** json, а так как текст отладки недействителен json, весь текст blob считается недействительным парсером json. –

+0

Привет @MarcB, спасибо за ваши отзывы. Еще один намек? Или вы знаете ссылку, где я могу найти решение? – MDR

ответ

0

В PHP стороне:

$obj = new stdClass(); 
$obj->label="Price of an item"; 
$obj->data = array(
    array('1999','200'), 
    array('2000','210'), 
    array('2007','240') 
); 

echo json_encode($obj); 

Давайте предположим, что ваш JSON это:

[ 
    { 
     "response": [ 
      { 
       "1999": "200", 
       "2000": "210", 
       "2007": "240" 
      } 
     ] 
    } 
] 

В Android стороне:

String jsonString3 = 
       "[\n" + 
         " {\n" + 
         "  \"response\": [\n" + 
         "   {\n" + 
         "    \"1999\": \"200\",\n" + 
         "    \"2000\": \"210\",\n" + 
         "    \"2007\": \"240\"\n" + 
         "   }\n" + 
         "  ]\n" + 
         " }\n" + 
         "]"; 
     try{ 
      JSONArray array = new JSONArray(jsonString3); 
      JSONArray priceArray = array.getJSONObject(0).getJSONArray("response"); 
      Log.d(LOG_TAG,"Price Array = " + priceArray.toString()); 

      for (int i = 0; i < priceArray.length(); i++){ 
       Log.d(LOG_TAG, "1999 = " + priceArray.getJSONObject(i).getString("1999")); 
       Log.d(LOG_TAG, "2000 = " + priceArray.getJSONObject(i).getString("2000")); 
       Log.d(LOG_TAG, "2007 = " + priceArray.getJSONObject(i).getString("2007")); 
      } 

     }catch (JSONException ex){ 
      Log.e(LOG_TAG, ex.toString()); 
     } 

Предположим, вы получили jsonData от вашего PHP API. Я надеюсь, что это поможет вам:

boolean success = false; 
     int temp= 0; 
     try { 
      JSONObject jsonobject = new JSONObject(jsonData); 
      success = jsonobject.getBoolean("success"); 
      if (success) { 
       // Locate the NodeList name 
       JSONArray jsonarray = jsonobject.getJSONArray("data"); 
       for (int i = 0; i < jsonarray.length(); i++) { 
        temp = i+1; 
        jsonobject = jsonarray.getJSONObject(i); 
        String id = jsonobject.getString("FIELD"+temp); 
        String values = jsonobject.getString("value"); 
        Log.e(LOG_TAG, "FIElD"+temp+": "+id); 
        Log.e(LOG_TAG, "Value: "+values); 
       } 
      } 
     } catch (JSONException e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } catch (Exception e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 
+0

Wow @Mohammad! У меня может быть лучший php-файл http://marcodr.byethost7.com/fahmi.php вещь, а не массив, мне нужна информация в FIELD1, FIELD2 и FIELD3 данного продукта – MDR

+0

Я только что отформатировал JSON. Но у меня есть вопрос: как я могу ввести содержимое jsonString3, если я не знаю, что такое вывод PHP? В моем случае я хотел бы сделать приложение, которое переносит данные из MySQL в интерфейс Android, где эти данные меняются каждый день. Есть идеи? – MDR

+0

Я добавил одну часть к моему ответу, надеюсь, это поможет. – Mohammad

0

Попробуйте это:

String jsonString3 = 
       "[\n" + 
         " {\n" + 
         "  \"response\": \"\",\n" + 
         "  \"FIELD1\": [\n" + 
         "   {\n" + 
         "    \"value\": \"A\"\n" + 
         "   }\n" + 
         "  ],\n" + 
         "  \"FIELD2\": [\n" + 
         "   {\n" + 
         "    \"value\": \"B\"\n" + 
         "   }\n" + 
         "  ],\n" + 
         "  \"FIELD3\": [\n" + 
         "   {\n" + 
         "    \"value\": \"C\"\n" + 
         "   }\n" + 
         "  ],\n" + 
         "  \"FIELD4\": [\n" + 
         "   {\n" + 
         "    \"value\": \"D\"\n" + 
         "   }\n" + 
         "  ]\n" + 
         " }\n" + 
         "]"; 
     try{ 

      JSONArray data = new JSONArray(jsonString3); 
      JSONObject response = data.getJSONObject(0); 
      Iterator<?> keys = response.keys(); 
      while(keys.hasNext()){ 
       String key = (String)keys.next(); 
       if (response.get(key) instanceof JSONArray) 
       { 
        JSONArray aArray = (JSONArray) response.getJSONArray(key); 
        for (int i = 0; i < aArray.length(); i++){ 
         Log.d(LOG_TAG, "item = " + key); 
         Log.d(LOG_TAG, "it's value = " + aArray.getJSONObject(i).getString("value")); 
        } 
       } 

      } 

     }catch (JSONException ex){ 
      Log.e(LOG_TAG, ex.toString()); 
     } 

Но мой JSON закодирована. Если вы получаете ваш JSON из PHP API, вы должны суммировать с решением, как этот код (я получил от моего jsonData апи):

String jsonData = apiCaller(params); 
    boolean success = false; 
      int temp= 0; 
      try { 
       JSONObject jsonobject = new JSONObject(jsonData); 
       success = jsonobject.getBoolean("success"); 
       if (success) { 
        // Locate the NodeList name 
        JSONArray jsonarray = jsonobject.getJSONArray("data"); 
        for (int i = 0; i < jsonarray.length(); i++) { 
         temp = i+1; 
         jsonobject = jsonarray.getJSONObject(i); 
         String id = jsonobject.getString("FIELD"+temp); 
         String values = jsonobject.getString("value"); 
         Log.e(LOG_TAG, "FIElD"+temp+": "+id); 
         Log.e(LOG_TAG, "Value: "+values); 
        } 
       } 
      } catch (JSONException e) { 
       Log.e("Error", e.getMessage()); 
       e.printStackTrace(); 
      } catch (Exception e) { 
       Log.e("Error", e.getMessage()); 
       e.printStackTrace(); 
      } 
Смежные вопросы