【问题标题】:Blackberry get JSON from web server URL黑莓从 Web 服务器 URL 获取 JSON
【发布时间】:2013-06-25 04:01:41
【问题描述】:

我有这样的 JSON 代码:

[{ "idShipping":"1328448569",
   "shippingDesti":"nusa tenggara barat",
   "shippingCosts":"21000"
 },
 { "idShipping":"1328448543",
   "shippingDesti":"nusa tenggara timur",
   "shippingCosts":"76000"
 }]

我从这个链接学习了一个教程:BlackBerry read json string from an URL。我变了

private static final String NAME = "name";

从DataParser.java 进入

private static final String NAME = "idShipping";

但是当我在模拟器上运行它时,它显示了一个弹出屏幕,说它无法解析来自 MyScreen.java 的数据。这意味着我可以得到 JSON 字符串,但我无法解析它。

我该如何解决?

【问题讨论】:

  • 您的 json 是 JSON 数组而不是 JSON 字符串
  • 如何解决?
  • 请提供有问题的代码,而不是指向另一个链接的链接...我累了或正在寻找代码。请尝试单步执行代码,并指出它在哪里中断 - 我发现这是调试 JSON 解析器的一种非常有用的方法。期待阅读您的更多详细信息.....

标签: java json eclipse blackberry


【解决方案1】:

对于您显示的 JSON,您将解析 idShipping 值,如下所示:

  //String response = "[{\"idShipping\":\"1328448569\",\"shippingDesti\":\"nusa tenggara barat\",\"shippingCosts\":\"21000\"},{\"idShipping\":\"1328448543\",\"shippingDesti\":\"nusa tenggara timur\",\"shippingCosts\":\"76000\"}]";
  try {
     JSONArray responseArray = new JSONArray(response);
     for (int i = 0; i < responseArray.length(); i++) {
        JSONObject nextObject = responseArray.getJSONObject(i);
        if (nextObject.has("idShipping")) {
           String value = nextObject.getString("idShipping");
           System.out.println("next id is " + value);
        }
     }
  } catch (JSONException e) {
     // TODO: handle parsing error here
  }

正如 Signare 所说,关键是解析 JSONArray,然后从中获取字符串值。

【讨论】:

  • 感谢您的回复,但我仍然感到困惑。我从我的服务器获取了我的 JSON 字符串,我应该更改您重新制作的响应之类的响应,或者只是尝试 try catch 部分?
  • @Vely,你可以从任何你喜欢的地方获取 JSON 字符串。无论您从服务器返回什么,都将是我上面显示的代码中的变量response。我必须放一些东西来演示如何解析你的字符串,并自己测试它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多