当前位置: 首页 > 知识库问答 >
问题:

在Java上获取XML或Json的代码

齐琦
2023-03-14

我试图从以下*链接*
http://21.26.54.26/swapi/api/data/json
http://21.26.54.26/swapi/api/data/xml中获取数据

我尝试了许多方法,但最后,当它通过这一行时总是给我错误jsonobjectjsonobj=new JSONObject(json);

 OkHttpClient client = new OkHttpClient();
            Request request = new Request.Builder()
                    .url("http://********/swapi/api/data/xml")
                    .build();


            Response responses = null;

            try {
                responses = client.newCall(request).execute();

                json = responses.body().string();

                System.out.println("JSON: " + json);

                try {


                    JSONObject jsonObj = new JSONObject(json);


                    //   JSONObject obj = new JSONObject(jsonObj);

                    // Getting JSON Array node
                    JSONArray contacts = jsonObj.getJSONArray("Carro");
                    for (int i = 0; i < contacts.length(); i++) {
                        JSONObject c = contacts.getJSONObject(i);
                        String id = c.getString("idintelisis");
                        System.out.println("TESTEEEEEEEEEEEEEEEEEEEEEEE: " + id);


                    }
                } catch (JSONException ex) {

                    System.out.println("Errrrrrrrrrrrrrrrrrrrrrrrrorrrrrrrrrrrrrrrrrrr: " + ex);
                }


            } catch (IOException e) {
                e.printStackTrace();
            }

这是错误**long**在该行中断时抛出的错误**long**

01-11 10:04:47.487 654 1-7024/pa.com.tropigas.pedidostf w/system.err:org.json.jsonexception:Value[{“IDIntelisis”:101,“Observaciones”:“nitin”,“fecha”:null,“Carro”:null,“Cargapkt”:“sd5”},{“IDIntelisis”:101,“Observaciones”:“nitin”,“fecha”:null,“Cargapkt”:“sd5”}]不能将java.lang.String类型的.tropigas.pedidostf W/system.err:at org.json.json.typemismatch(json.java)01-11 10:04:47.487 654 1-7024/pa.com.tropigas.pedidostf W/system.err:at org.json.json.java)01-11 10:04:47.487 654 1-7024/pa.com.tropigas.pedidostf W/system.err:at pa.com.(JSONObject.java)Tropigas.pedidostf.Carrosactivity$post.doinbackground(Carrosactivity.java:114)01-11 10:04:47.487 654 1-7024/pa.com.tropigas.pedidostf W/system.err:at pa.com.tropigas.pedidostf.Carrosactivity$post.doinbackground(Carrosactivity.java:65)01-11 10:04:47.48741-7024/pa.com.tropigas.pedidostf W/system.err:at android.os.asynctask$2.调用(asynctask.java)01-11 10:04:47.487 654 1-7024/pa.com.tropigas.pedidostf W/system.err:at java.util.concurrent.futuretask.run(futuretask.java)01-11 10:04:47.487 654 1-7024/pa.com.tropigas.pedidostf W/system.err:at 487 654 1-7024/pa.com.tropigas.pedidostf W/system.err:at java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java)01-11 10:04:47.487 654 1-7024/pa.com.tropigas.pedidostf W/system.err:at java.util.concurrent.threadpoolexecutor.w/system.err:at java.util.concurrent.threadpoolexecutor.w/system.err:at 654 1-7024/pa.com.tropigas.pedidostf I/system.out:error:org.json.jsonexception:Value[{“IDIntelisis”:101,“observaciones”:“nitin”,“fecha”:null,“Carro”:null,“Cargapkt”:“sd5”},{“IDIntelisis”:101,“observaciones”:“nitin”,“fecha”:null,java.lang.String类型的“Carro”:null,“Cargapkt”:“sd5”}]不能转换为JSONObject

我使用**Postman**检查**Json**的结果,以及**日志**的**Json**,所有这些都表明**Json**在结构方面是正确的。我不明白当试图将其转换为*Json*对象时,会发生什么错误

共有1个答案

穆浩皛
2023-03-14

这是因为您得到的是JSONArray而不是JSONObject

试试这个

JsonArray arr = new JsonArray(obtained_result);

然后尝试使用getJsonObject(index)方法从arr获取JsonObject

示例:

JsonArray arr = new JsonArray(obtained_result);
   for(int i = 0; i< arr.length(); i++){
   JsonObject ob = arr.getJSONObject(i);
}
 类似资料:
  • 我有一个返回true或false的switch语句和一个if-and-else语句,然后我使用它进行更多验证。 因为该值正在使用ajax在输入字段上发送。我希望PHP返回true或false。 我已经用JSON试过了,我用一个警告来测试我得到了什么,它只是一大堆html。 AJAX 当你看到警报(数据)时,我将用它替换它 我的代码不会从php返回真或假,在警报中,它只是从我的索引页输出了很多htm

  • 问题内容: 采用JSON或Array对象并将其转换为XML的最简单方法是什么?也许我在所有错误的地方找东西,但找不到合适的答案来使我按部就班。这是我必须以某种方式建立自己的东西吗?或者是否有类似json_encode / json_decode的东西将采用数组或json对象并将其弹出为xml对象? 问题答案: 在这里检查:如何将数组转换为SimpleXML 而这个文件应帮助您太 关于Json到Ar

  • 困惑: 对我来说没有代码段工作,每次我面对404,我想我错过了什么?

  • 我有一个简单的代码,从网络上获取一个XML文件。更具体地说,是一个包含挪威银行汇率的XML文件。问题是,它只是有时起作用。通常,它从来没有工作的第一次。 经过一些测试,我很确定它在上崩溃。但正如一所说,并不是每次都这样。 那么,有没有更好的方法来实现这一点,并确保它正确地获取XML文件 感谢所有的帮助。 } 错误如下: JAVA网SocketException:在java上重置连接。网Socket

  • 我认为两个线程同时调用take方法,只有一个线程可以成功地获得锁,而另一个线程将在以下行等待锁:这是take的源代码: 但是,当我对这两个线程进行线程转储时,我发现两个线程都成功锁定,并且在线等待:(因为队列为空)这是线程转储: “test-thread-18”#6357守护进程prio=5 os_prio=0 tid=0x00007f8f54543000 nid=0x58ef在条件[0x0000

  • 问题内容: 我已经在JAX-WS中设置了SOAP WebServiceProvider,但是在弄清楚如何从SOAPMessage(或任何Node)对象中获取原始XML时遇到了麻烦。这是我现在所获取的代码示例,也是我尝试获取XML的地方: 是否有一种简单的方法来获取原始请求的XML?如果有一种方法可以通过设置其他类型的Provider(例如Source)来获取原始XML,那么我也愿意这样做。 问题答