java - 错误: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)
解决方案
正如错误消息中所述,您获得的 JSON 字符串不是以“{”开头。这意味着它不是一个正确的 JSON 对象。
我会记录 JSON 字符串(在您的情况下是标记器)以查看您获得的内容,并查看为什么它不是有效的 Json 对象。
推荐阅读
- windows - Docker 构建拉取访问被拒绝,存储库不存在或可能需要
- c++ - 这个调试断言失败是什么意思?
- android - 通过 DataBinding 控制 Recycler View 项目的 UI 可见性
- python - 在 BigQuery 的 LoadJobConfig 中将 JSON 字段转换为 STRING
- c# - 如果 reader.ReadDataTable() 没有从数据库中的存储过程返回任何数据,则无法处理
- makefile - 如何让 Makefile 从另一个文件中看到目标
- ios - WKWebView 显示白屏。PDF 不显示
- animation - 动画/关键帧对象的纹理烘焙等效
- python - ValueError,如何将另一个文档中的字符串列放入我的程序中
- jupyter-notebook - 是否有相当于 LaTeX 的“输入”命令的降价(可以在 jupyter 笔记本中使用)