首页 > 解决方案 > 错误:JSONObject 文本必须在 1688 [字符 1689 第 1 行] 处以 '{' 开头

问题描述

我有 udpclient 类,我尝试获取 jsonObject 来监听 udpserver,我不知道这段代码是否正确,我的 udpclient 类是这样的

public class UDPClient {

public static void main(String args[]) throws IOException {


  URL url = new URL("https://www.instagram.com/ihanan95/?__a=1");
  JSONTokener tokener = new JSONTokener(url.openStream());


      try {
          DatagramSocket socket = new DatagramSocket(8888); // source socket
          for (int i = 0; i < 100000; i++) {
              int port = 8080; // destination port
              byte[] buf = new byte[2024];
              JSONObject json = new JSONObject(tokener);
              json.put("count", i);
              InetAddress address = InetAddress.getByName("localhost");
              System.out.println(json.toString());
              buf = json.toString().getBytes("UTF8");
              DatagramPacket packet = new DatagramPacket(buf, buf.length, address, port);
              socket.send(packet);
          }
          socket.close();
      } catch (Exception ex) {
          ex.printStackTrace();
      }
  }
}

当我尝试运行此代码时,我收到这样的错误

org.json.JSONException: A JSONObject text must begin with '{' at 1688 
[character 1689 line 1]
at org.json.JSONTokener.syntaxError(JSONTokener.java:505)
at org.json.JSONObject.<init>(JSONObject.java:215)
at UDPClient.main(UDPClient.java:29)

标签: javaserverudpclientlistener

解决方案


正如错误消息中所述,您获得的 JSON 字符串不是以“{”开头。这意味着它不是一个正确的 JSON 对象。

我会记录 JSON 字符串(在您的情况下是标记器)以查看您获得的内容,并查看为什么它不是有效的 Json 对象。


推荐阅读