2012-03-04 5 views
0

Я пытаюсь извлечь данные из базы данных с помощью php и отправить ее в java с помощью json. Используя java, я хотел получить значения json у arraylist. Этот массив будет содержать объект Fruit. Но в моем коде я получаю значения внутри arraylist, и этот arraylist содержит LinkedHashMap, а не объект фруктов. Как изменить php-код, чтобы в java-стороне я мог получить такие значения, как ArrayList fruitList = new ArrayList();Php list object to java arraylist object

<?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()); 
}