【问题标题】:Using the Blackberry JSON parser, how do I parse out "[" from string?使用 Blackberry JSON 解析器,如何从字符串中解析出“[”?
【发布时间】:2011-12-30 13:20:19
【问题描述】:

我正在为黑莓使用浮动的 JSON 库,并在“How to parse the JSON response in Blackberry/J2ME?”中遵循这个答案。

我遇到的问题是我收到一条错误消息,提示 JSONObject has to begin with a "{"。我的 JSON 字符串包含在 [ ] 中,这是 Web 服务所做的事情。

我用在 Android 和 iPhone 上的库去掉了这一点,所以我想知道解决这个问题的最佳方法是什么?我不认为我可以解析出所有[ ],因为我认为它们用于多维 JSON 字符串。


编辑:

这是一个例子:

[{"nid":"1","title":"test","image":"m0.jpg","by":"Presented by","by_name":"Inc.","summary":"..."}, {"nid":"6","title":"A","image":".jp[0.0] g","by":"Presented by","by_name":"Theatre","summary":""}]

【问题讨论】:

标签: blackberry


【解决方案1】:

如果您不确定 JSON 数据的有效性,请使用任何 JSON Validator,例如JSONLint

您的数据中有一些不需要的字符,即["image":".jp[0.0] g" 中的]。我认为这些数据是由Eclipse 在控制台上打印时添加的。

示例中提供的数据不代表 JSONObject,而是一个数组。因此,首先从数据构造一个 JSONArray 并进行解析。下面是一个示例代码 sn-p(带有修改后的数据集):

String strJSONData = "[{\"nid\":\"1\",\"title\":\"test\"},{\"nid\":\"6\",\"title\":\"A\"}]";
final String CONS_NID = "nid";
final String CONS_TITLE = "title";
try {
    JSONArray ja = new JSONArray(strJSONData);
    if (ja != null) {
        JSONObject arrObj;
        for (int i = 0; i < ja.length(); i++) {
        arrObj = (JSONObject) ja.get(i);
        if (arrObj.has(CONS_NID)) {
                System.out.println("ID: " + arrObj.getString(CONS_NID));
        }
        if (arrObj.has(CONS_TITLE)) {
            System.out.println("Title: " + arrObj.getString(CONS_TITLE));
        }
        }
        arrObj = null;
    }
    ja = null;
} catch (Exception exc) {
}
strJSONData = null;

【讨论】:

    【解决方案2】:

    如果您知道它以 '[' 和 ']' 开头和结尾,那么您只需检查一下,然后将其间的子字符串交给解析器。

    String myJsonString = ...;
    if(myJsonString.charAt(0) == '[' && myJsonString.charAt(myJsonString.length() - 1) == ']') {
        realJsonParse(myJsonString.substring(1, myJsonString.length() - 1);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 2014-07-11
      • 2018-04-13
      • 2011-07-28
      • 1970-01-01
      • 2023-04-08
      相关资源
      最近更新 更多