如何在 Processing 中处理空的 JSONObject?

How to handle empty JSONObject in Processing?

您好,我在 Processing IDE 中使用 loadJSONObject 函数从 URL 接收 JSON 对象。 以下是我的代码:

      JSONObject jsonUserLocations = loadJSONObject("http://smrt.utd.sg/eLocation/getLocs.php?userId="+usrID+"&sTime="+strtTime+"&eTime="+endTym);

此代码在 php return 一些数据(对于某些用户)时有效。 当它没有 return 任何数据时,就会出现问题。 (php不return任何数据,当没有数据时,浏览器显示一个空白页面。这意味着用户没有位置数据)

在这种情况下,处理 IDE 给我一个错误提示;

a jsonobject text must begin with {

我的问题是在这种情况下如何处理空 JSON 对象?如果这是空的,我需要跳过并为下一个用户请求数据。非常感谢您的帮助。 谢谢, 哈萨拉

编辑:

这是我在有数据时收到的示例 json 对象。

{"locations":[{"latitude":"1.3809274","longitude":"103.7654596","startTime":"1421918587868","duration":"0","accuracy":"30"},{"latitude":"1.3805307","longitude":"103.7661015","startTime":"1421941711737","duration":"0","accuracy":"45"},{"latitude":"1.3805304","longitude":"103.7660959","startTime":"1421942011727","duration":"0","accuracy":"45"},{"latitude":"1.3799822","longitude":"103.7658037","startTime":"1421942311835","duration":"0","accuracy":"82.5"}],"success":1}

您有两个选择:

你可以先从URL读取字符串,如果是空的,就不用费心解析了。

或者您可以捕获 Processing 抛出的异常:

try{
   JSONObject jsonUserLocations = loadJSONObject("http://smrt.utd.sg/eLocation/getLocs.php?userId="+usrID+"&sTime="+strtTime+"&eTime="+endTym);
}
catch(JSONException e){
   e.printStackTrace();
   //json was blank, do something else
}