簡體   English   中英

Gson字符串到對象

[英]Gson String to Object

我堅持如何解決此問題,我想我理解的問題是gson格式不正確,例如在這種情況下缺少Bsid。 如果該問題再次發生,我將如何解決?

Error:E/AndroidRuntime: FATAL EXCEPTION: main
Process: , PID: 32171 com.google.gson.JsonSyntaxException: java.io.EOFException: End of input at line 1 column 65536 path $[555].bBsid

正在使用的代碼:

    if(json.length()== Integer.MAX_VALUE){
            Log.d(TAG, "Error");
            return null;
        } else {


            Log.i(TAG, json);

            Type arrayType = new TypeToken<List<WifiObject>>() {
            }.getType();
            Gson gson = new Gson();


            ArrayList<WifiObject> wifiObjectArrayList = new ArrayList<WifiObject>();
            List wifiObjectList = gson.fromJson(json, arrayType);
            for (int i = 0; i < wifiObjectList.size() - 1; i++) {

                if (wifiObjectList.get(i) != null) {
                    WifiObject wifiObject = (WifiObject) wifiObjectList.get(i);
                }

//                    Log.i(TAG, wifiObject.getBBSID());

//                    wifiObjectArrayList.add(wifiObject);
            }

            return wifiObjectArrayList;
        }

賓語:

  public WifiObject(String bBSID, String sSID, String capabilites, Integer frequency, Integer level){
    //Instead of this.bssid for example because the setters already have Log's in them
    setBBSID(bBSID);
    setSSID(sSID);
    setCapabilites(capabilites);
    setFrequency(Integer.toString(frequency));
    setLevel(Integer.toString(level));

}

嘗試將其轉換為:

 02-28 23:57:53.876 4259-4259/ I/WifiHandler: 
[{"bBsid":"00:62:ec:fd:ea:f0","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"2462","level":"-45","sSid":"eduroam"},{"bBsid":"00:62:ec:fd:ea:f1","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"2462","level":"-46","sSid":"KINGSWAP"},{"bBsid":"00:62:ec:fd:ea:f2","capabilities":"[ESS]","frequency":"2462","level":"-46","sSid":"The Cloud"},{"bBsid":"00:62:ec:fd:ea:f3","capabilities":"[WPA2-EAP-CCMP][WPA-EAP-TKIP][ESS]","frequency":"2462","level":"-46","sSid":"PLOCAL"},{"bBsid":"00:62:ec:fd:ea:f4","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"2462","level":"-46","sSid":"SLaMFT"},{"bBsid":"00:62:ec:fd:ea:50","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"2437","level":"-53","sSid":"eduroam"},{"bBsid":"00:62:ec:fd:ea:ff","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"5520","level":"-53","sSid":"eduroam"},{"bBsid":"00:62:ec:fd:ea:fd","capabilities":"[ESS]","frequency":"5520","level":"-53","sSid":"The Cloud"},{"bBsid":"00:62:ec:fd:ea:53","capabilities":"[WPA2-EAP-CCMP][WPA-EAP-TKIP][ESS]","frequency":"2437","level":"-54","sSid":"PLOCAL"},{"bBsid":"00:62:ec:fd:ea:51","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"2437","level":"-55","sSid":"KINGSWAP"},{"bBsid":"00:62:ec:fd:ea:52","capabilities":"[ESS]","frequency":"2437","level":"-55","sSid":"The Cloud"},{"bBsid":"00:62:ec:fd:ea:fb","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"5520","level":"-55","sSid":"SLaMFT"},{"bBsid":"00:62:ec:fd:ea:54","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"2437","level":"-55","sSid":"SLaMFT"},{"bBsid":"00:62:ec:fd:ea:5d","capabilities":"[ESS]","frequency":"5240","level":"-56","sSid":"The Cloud"},{"bBsid":"00:62:ec:fd:ea:fe","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"5520","level":"-56","sSid":"KINGSWAP"},{"bBsid":"00:62:ec:fd:ea:5e","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"5240","level":"-57","sSid":"KINGSWAP"},{"bBsid":"00:62:ec:fd:ea:5c","capabilities":"[WPA2-EAP-CCMP][WPA-EAP-TKIP][ESS]","frequency":"5240","level":"-57","sSid":"PLOCAL"},{"bBsid":"00:62:ec:fd:ea:5f","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"5240","level":"-58","sSid":"eduroam"},{"bBsid":"00:62:ec:fd:ea:5b","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"5240","level":"-58","sSid":"SLaMFT"},{"bBsid":"00:62:ec:fd:ea:fc","capabilities":"[WPA2-EAP-CCMP][WPA-EAP-TKIP][ESS]","frequency":"5520","level":"-58","sSid":"PLOCAL"},{"bBsid":"00:62:ec:fd:ec:30","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"2437","level":"-59","sSid":"eduroam"},{"bBsid":"00:62:ec:fd:ee:61","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"2412","level":"-59","sSid":"KINGSWAP"},{"bBsid":"00:62:ec:fd:ee:62","capabilities":"[ESS]","frequency":"2412","level":"-59","sSid":"The Cloud"},{"bBsid":"00:62:ec:fd:ee:64","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"2412","level":"-59","sSid":"SLaMFT"},{"bBsid":"00:62:ec:fd:ec:31","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"2437","level":"-60","sSid":"KINGSWAP"},{"bBsid":"00:62:ec:fd:ee:60","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"2412","level":"-60","sSid":"eduroam"},{"bBsid":"00:62:ec:fd:ee:63","capabilities":"[WPA2-EAP-CCMP][WPA-EAP-TKIP][ESS]","frequency":"2412","level":"-60","sSid":"PLOCAL"},{"bBsid":"00:62:ec:fd:ec:32","capabilities":"[ESS]","frequency":"2437","level":"-60","sSid":"The Cloud"},{"bBsid":"00:62:ec:fd:ec:34","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"2437","level":"-61","sSid":"SLaMFT"},{"bBsid":"00:42:68:a6:a6:41","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"2462","level":"-62","sSid":"KINGSWAP"},{"bBsid":"00:42:68:a6:a6:42","capabilities":"[ESS]","frequency":"2462","level":"-62","sSid":"The Cloud"},{"bBsid":"00:42:68:a6:a6:43","capabilities":"[WPA2-EAP-CCMP][WPA-EAP-TKIP][ESS]","frequency":"2462","level":"-62","sSid":"PLOCAL"},{"bBsid":"00:42:68:a6:a6:44","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"2462","level":"-62","sSid":"SLaMFT"},{"bBsid":"00:42:68:a6:a6:40","capabilities":"[WPA2-EAP-CCMP][ESS]","frequency":"2462","level":"-62","sSid":"eduroam"},{"bBsid":"00:62:ec:fd:ec:33","capabilities":"[WPA2-EAP

讓我盡快清除此問題;

 Gson gson = new Gson();
 String json ="[{\"bBsid\":\"00:62:ec:fd:ea:f0\",\"capabilities\":\"[WPA2-EAP-CCMP][ESS]\",\"frequency\":\"2462\",\"level\":\"-45\",\"sSid\":\"eduroam\"}]"; // Your Json String

        if (json.equalsIgnoreCase("")) {
            return null;
        }
        YourClassName obj = gson.fromJson(json, YourClassName.class);

return obj;

在這里,obj是您的類對象,它將轉換為類對象,打印它的日志並檢查它。 希望這會幫助你。

可能的原因是Json字符串被截斷了。 僅當Log打印時才可能發生截斷,但我認為現在不是這種情況。

即,如果您從Json刪除最后一個不完整的WifiObject並添加結尾]則會使用34個WifiObjects反序列化權利。

您應該跟蹤生成Json的點,並查看在兩者之間發生的情況。 我曾經遇到過同樣的問題,但只是不記得我的原因是什么(如果找到我會回來的)。

我懷疑這有點像將這個長字符串存儲在SharedPreferences但是您沒有為Json生成提供代碼,后來還沒有提供任何更具體的操作信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM