Android-JSON/GSON解析

Android-JSON/GSON解析,android,json,parsing,iteration,gson,Android,Json,Parsing,Iteration,Gson,在为查询发送POST传递变量后,我的服务器在php代码中使用jsonecode()返回以下字符串 {“距离”:“0.00194210443015968”,“usrlat”:“38.5817”,“usrlong”:“-77.3245”,“globalid”:“245”}{“距离”:“4.9444565874035”,“usrlat”:“38.6501”,“usrlong”:“-77.2975”,“globalid”:“233”}{“距离”:“4.9444550874035”,“usrlat”:“3

在为查询发送POST传递变量后,我的服务器在php代码中使用jsonecode()返回以下字符串

{“距离”:“0.00194210443015968”,“usrlat”:“38.5817”,“usrlong”:“-77.3245”,“globalid”:“245”}{“距离”:“4.9444565874035”,“usrlat”:“38.6501”,“usrlong”:“-77.2975”,“globalid”:“233”}{“距离”:“4.9444550874035”,“usrlat”:“38.6501”,“usrlong”:“-77.2975”,“globalid”:“242”}

代码:

背景-这段简单的代码生成了一个jObject,它只保存响应中的第一个元素(对象)。我已经尝试通过在响应前后插入方括号来将响应更改为jArray,但是响应中的元素(对象)并没有用逗号分隔。考虑通过插入逗号的响应进行交互,但是存在相同的根问题。。。解析和交互。此外,我还根据响应创建了一个具有属性的类。没有运气,因为存在相同的根本问题…解析和迭代。我在网上搜索了一下,才发现JSON是一种非常简单的XML格式。我参观了我当地的书店,发现JSON还不是一个值得一读的话题。最后,我转向GSON,希望能澄清一些问题


问题-使用JSON或GSON如何反序列化和迭代响应以在android应用程序中创建可用对象?在搜索解决方案时,我问的问题是否正确?

您基本上找到了您的问题-文本不是有效的JSON数组。所以你有两个选择:

  • 对JSON进行预处理,使其成为有效的JSON数组
  • 逐个读取每一行并为每一行创建一个JSONObject,然后手动将每个对象添加到JSONSRARY或普通的旧java数组或集合中

  • 仅供参考-这假设您无法控制服务器端。如果您这样做,请更改该代码,使其成为有效的JSON数组

    您基本上碰到了您的问题-文本不是有效的JSON数组。所以你有两个选择:

  • 对JSON进行预处理,使其成为有效的JSON数组
  • 逐个读取每一行并为每一行创建一个JSONObject,然后手动将每个对象添加到JSONSRARY或普通的旧java数组或集合中

  • 仅供参考-这假设您无法控制服务器端。如果您这样做了,请更改该代码,使其成为有效的JSON数组

    mjmarsh感谢您的回复。毫无疑问,我是个新手。预处理让我想到了迭代。答案都是明确的。想绕过JSONArray还需要通过字符串进行迭代吗?。最后,服务器在一个托管平台上,已经检查了ini。jsonencode()在mySQL上是否可调整?我已将服务器输出更改为[{“距离”:“0.00194210443015968”,“usrlat”:“38.5817”,“usrlong”:“-77.3245”,“globalid”:“245”}][{“距离”:“4.9444550874035”,“usrlat”:“38.6501”,“usrlong”:“-77.2975”,“globalid”:“233”[{“距离”:“4.9444550874035”,“usrlong”:“38.6501”,“usrlong”:“-77.2975”,“globalid”]242]此外,我还包括了jArray=newjsonarray(response);我尝试了一个迭代for循环,但只拉入了第一个数组。mjmarsh-谢谢。我修改了服务器的输出。我使用以下链接将返回的每个正确的JSONObject添加到一个正确格式化的JSON数组中。在服务器上执行比在Java中修改更容易管理。我曾经创建过正确的数组。我曾经验证过这个回答。现在我将在应用程序中使用JSON或GSON。再次感谢!谢谢你的回复。毫无疑问,我是个新手。预处理让我想到了迭代。答案都是明确的。想绕过JSONArray还需要通过字符串进行迭代吗?。最后,服务器在一个托管平台上,已经检查了ini。jsonencode()在mySQL上是否可调整?我已将服务器输出更改为[{“距离”:“0.00194210443015968”,“usrlat”:“38.5817”,“usrlong”:“-77.3245”,“globalid”:“245”}][{“距离”:“4.9444550874035”,“usrlat”:“38.6501”,“usrlong”:“-77.2975”,“globalid”:“233”[{“距离”:“4.9444550874035”,“usrlong”:“38.6501”,“usrlong”:“-77.2975”,“globalid”]242]此外,我还包括了jArray=newjsonarray(response);我尝试了一个迭代for循环,但只拉入了第一个数组。mjmarsh-谢谢。我修改了服务器的输出。我使用以下链接将返回的每个正确的JSONObject添加到一个正确格式化的JSON数组中。在服务器上执行比在Java中修改更容易管理。我曾经创建过正确的数组。我曾经验证过这个回答。现在我将在应用程序中使用JSON或GSON。再次感谢!这里有个例子这里有个例子
            try 
            { etc.. connection details..
    
                request = new OutputStreamWriter(connection.getOutputStream()); 
                request.write(parameters); 
                request.flush(); 
                request.close();             
                String line = "";                
                //Convert response to a string
                InputStreamReader isr = new InputStreamReader(connection.getInputStream()); 
                BufferedReader reader = new BufferedReader(isr); 
                StringBuilder sb = new StringBuilder(); 
                while ((line = reader.readLine()) != null) 
                { 
    
                    sb.append(line + "\n");
    
                } 
                // Response from server will be stored in response variable.                 
                response = sb.toString(); 
    
                //try parse the string to a JSON object
                try{
    
                    jObject = new JSONObject(response);                 
    
                }catch(JSONException e){...