php產生的json傳給android gson無法解析

來源:互聯網
上載者:User
關鍵字 php android
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的對應寫法。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.