Используя парсер Blackberry JSON, как мне разобрать "[" из строки? - PullRequest
0 голосов
/ 27 декабря 2011

Я использую библиотеку JSON для Blackberry и следую за этим ответом в " Как разобрать ответ JSON в Blackberry / J2ME? ".

Проблема, с которой я столкнулсяв том, что я получаю сообщение об ошибке JSONObject has to begin with a "{".Моя строка JSON обернута в [ ], что делает веб-служба.

Библиотеки, которые я использовал для 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":""}]

Ответы [ 2 ]

0 голосов
/ 30 декабря 2011

Если вы знаете, что он начинается и оканчивается на '[' и ']', то вы можете просто проверить это, взять промежуточную подстроку между ними и передать ее анализатору.

String myJsonString = ...;
if(myJsonString.charAt(0) == '[' && myJsonString.charAt(myJsonString.length() - 1) == ']') {
    realJsonParse(myJsonString.substring(1, myJsonString.length() - 1);
}
0 голосов
/ 27 декабря 2011

Если вы не уверены в достоверности данных JSON, используйте любой JSON Validator, например, JSONLint .

И у вас есть некоторые нежелательные символы в ваших данных, то есть [ и ] в "image":".jp[0.0] g". Я думаю, что эти данные добавляются Eclipse при печати на консоли.

Данные, представленные в примере, не представляют собой объект JSONObject, но представляют собой массив. Итак, начните с создания JSONArray из данных и выполните анализ. Ниже приведен пример фрагмента кода (с измененным набором данных):

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...