简体   繁体   English

Gson字符串到对象

[英]Gson String to Object

I am stuck on how to fix this problem, I think i understand the problem which is that the gson is in the incorrect format eg missing Bsid in this case. 我坚持如何解决此问题,我想我理解的问题是gson格式不正确,例如在这种情况下缺少Bsid。 How would i fix it so if this problem so it doesnt happen again? 如果该问题再次发生,我将如何解决?

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

Code Being Used: 正在使用的代码:

    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;
        }

Object: 宾语:

  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));

}

Trying to convert this: 尝试将其转换为:

 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

Let me clear this in shortly; 让我尽快清除此问题;

 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;

Here, obj is Your Class Object, which is converted into Class Object, Print Log of it & Check it. 在这里,obj是您的类对象,它将转换为类对象,打印它的日志并检查它。 Hope this will Help you. 希望这会帮助你。

Possible reason is that the Json string is truncated. 可能的原因是Json字符串被截断了。 Truncation might happen only when Log prints it but I think that is not the the case now. 仅当Log打印时才可能发生截断,但我认为现在不是这种情况。

Namely, if you remove the last incomplete WifiObject from the Json and add closing ] it deserializes right, with 34 WifiObjects . 即,如果您从Json删除最后一个不完整的WifiObject并添加结尾]则会使用34个WifiObjects反序列化权利。

You should trace the point where the Json is generated and see what happens in between. 您应该跟踪生成Json的点,并查看在两者之间发生的情况。 I have experienced this same issue but just can not remember what was the reason in my case (will get back if I find it). 我曾经遇到过同样的问题,但只是不记得我的原因是什么(如果找到我会回来的)。

I suspect that there is something like storing this long string in SharedPreferences but you have not provided code for the Json generation and later manipulation so hard to say anything more specific. 我怀疑这有点像将这个长字符串存储在SharedPreferences但是您没有为Json生成提供代码,后来还没有提供任何更具体的操作信息。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM