我正在尝试使用php从数据库中获取数据,并使用json将其发送到java。使用java,我想从arraylist中检索json值。该arrayList将包含水果对象。但在我的代码中,我在arraylist中获取值,并且该arraylist包含LinkedHashMap,而不是fruit对象。如何更改php代码,以便在java端可以获得ArrayList fruitList=new 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());
}
}
您应该阅读Gson文档。它描述了如何处理泛型数据类型和集合。假设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());
}