1.php json_encode 產生的json傳輸給android 用gson無法解析
2.$arr = array('token'=>'111','id'=>'1','contacts'=>array('name'=>'11','tel'=>'188'));
就是這種數組中包含數組 轉換成json 發送給 android android用gson無法解析。
PHP多維關聯陣列用json_encode產生json串 android用gson不識別
用索引數組產生的則可以
回複內容:
1.php json_encode 產生的json傳輸給android 用gson無法解析
2.$arr = array('token'=>'111','id'=>'1','contacts'=>array('name'=>'11','tel'=>'188'));
就是這種數組中包含數組 轉換成json 發送給 android android用gson無法解析。
PHP多維關聯陣列用json_encode產生json串 android用gson不識別
用索引數組產生的則可以
推薦在Android使用GsonFormat整合到AS中,可以很方便的生產符合的javaBean,如果你Android端解析代碼沒寫錯得話就不會有什麼問題的。
下面是使用該工具對應你的json產生的javaBean:
public class ceshi { /** *token : 111 *id : 1 *contacts : {"name":"11","tel":"188"} */ private String token; private String id; /** *name : 11 *tel : 188 */ private ContactsBean contacts; public String getToken() { return token; } public void setToken(String token) { this.token = token; } public String getId() { return id; } public void setId(String id) { this.id = id; } public ContactsBean getContacts() { return contacts; } public void setContacts(ContactsBean contacts) { this.contacts = contacts; } public static class ContactsBean { private String name; private String tel; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } }}
要不你把轉換出來的json和你用來接收json的實體類發一下?
不同語言,不同版本解析 json 的庫可能實現上有所不同
php 是內建,所以很容易調用,有些語言要使用第三方的類庫
所以乾脆問 android 拿接收到的字串是怎麼樣的,然後你在用php json_decode,看看能不能解析
gson不能解析php的json字串,主要看,Android用戶端接收到的json字串是否完整,如果完整,在使用gson的時候,轉換成java對象,雖然gson支援泛型,但是至少你要提供json字串對應的javaBean執行個體,否則轉換一定失敗。
$arr = array('token'=>'111','id'=>'1','contacts'=>array('name'=>'11','tel'=>'188'));
在java中應該對應一個class,該類必須有String token,int id,Object contacts,而contacts對應兩一個類,該類必須有String name,String tel屬性。
Test.java
package test.joyven.com;public class Test { private int id; private String token; private Contacts contacts; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getToken() { return token; } public void setToken(String token) { this.token = token; } public Contacts getContacts() { return contacts; } public void setContacts(Contacts contacts) { this.contacts = contacts; } }
Contacts.java
package test.joyven.com;public class Contacts { private String name; private String tel; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } }
把json串列印出來,看看json結構,我估計是你java bean的格式不對。
Model[] models = new Gson().fromJson(JsonStr, Model[].class);
public class Model{ public int id; public String token; public Contacts[] contacts;}public class Contacts { public String name; public String tel;}
最簡單的做法,是用Map去解析你的json,遇到對象就進行強制轉換,雖然不優雅,但通用。針對那些不太清楚自己的Bean寫法的人比較好用。上面的回複都是bean的對應寫法。