2012-03-04 148 views
0

我想從使用PHP的數據庫中獲取數據並將其發送到使用JSON的Java。使用java,我想從arraylist中檢索json值。該數組列表將包含水果對象。但在我的代碼中,我在arraylist中獲取值,而arraylist包含LinkedHashMap而不是水果對象。我如何更改php代碼,以便在Java方面,我可以得到像ArrayList的值fruitList = new ArrayList();Php列表對象到java arraylist對象

<?php 
    require("phpfunc.fns"); 
    include('Fruit.php'); 
    sqlconnect(); 

    $data = array(); 
    $fruit = new Fruit(); 
    $sql="select * from fruit";   
    $result=mysql_query($sql); 
    $count = 0; 

    while($r=mysql_fetch_array($result)){ 
     //echo $r['lati'].",". $r['longi'] ; 
     $fruit->setFruitId($r['fruitId']); 
     $fruit->setAvailable($r['available']); 

     $data[$count] = $fruit; 
     $count++; 
    } 
    echo json_encode($data); 

?> 

    //java code 
public void decodeUsingGSON(String json){ 
     Gson gson = new Gson(); 
     ArrayList fruitList = gson.fromJson(json, ArrayList.class); 

     for(int i=0; i<fruitList.size(); i++){ 
      Fruit fruit = (Fruit) fruitList.get(i); 
      System.out.println(fruit.getAvailable()); 
     } 
    } 

回答

0

你應該在Gson documentation讀了。它描述瞭如何handle generic data types and collections。假設JSON格式正確,以下內容應該適用:

final Type collectionType = new TypeToken<Collection<Fruit>>(){}.getType(); 
final Collection<Fruit> fruits = gson.fromJson(json, collectionType); 

for(final Fruit fruit; fruits) { 
    System.out.println(fruit.getAvailable()); 
}