2013-08-12 5 views
1

У меня есть следующая строка: ["LankaBell","BillDesk"]Как преобразовать строку json с квадратными скобками в список?

Как я преобразовать его в Java список объектов с помощью использования json-lib-2.2.3-jdk15.jar\net\sf\json библиотеки?

EDIT: Если это невозможно, используйте эту библиотеку, а также решение с использованием других библиотек.

+0

, что является причиной для преобразования только что Лив? почему бы не использовать методы String? Также показать нам свои усилия – sanbhat

+2

по этой ссылке: Это полезно http://stackoverflow.com/questions/5015844/parsing-json-object-in-java – Master

+0

@sanbhat В моем продукте введения новой библиотеки не так уж легко. – Prateek

ответ

5

Использование JSON-Lib:

String source = "[\"LankaBell\",\"BillDesk\"]"; 
List<String> list = new ArrayList<>(); 
list = JSONArray.toList(JSONArray.fromObject(source), new Object(), new JsonConfig()); 

(На самом деле вы можете использовать только JSONArray.toList(JSONArray.fromObject(source)) но не рекомендуется)

еще один не осуждается решение:

list = (List<String>) JSONArray.toCollection(JSONArray.fromObject(source)) 
+0

Спасибо, что работает для меня, используя ту же библиотеку (net.sf.json ..). Я использую этот подход: list = (Список ) JSONArray.toCollection (JSONArray.fromObject (источник)) – Prateek

+0

Спасибо Shylov. Это сработало. – NEV

0
String string = "[\"LankaBell\",\"BillDesk\"]"; 

    //Remove square brackets 
    string = string.substring(1, string.length()-1); 

    //Remove qutation marks 
    string.replaceAll("\"", ""); 

    //turn into array 
    String[] array = string.split(","); 

    //Turn into list 
    List<String> list = Arrays.asList(array); 

    System.out.println(list); 
+0

Как насчет 'String string =" [\ "LankaBell \", \ "BillDesk \", \ "one, two \"] ";'? – dantuch

0
Object[] objs = "[\"Lankabell\", \"BillDesk\"]".replaceAll("\\[|\\]|\"","").split(","); 
1

Я очень рекомендую используя Jackson вместо json-lib.

List<String> list = new org.codehaus.jackson.map.ObjectMapper().readValue("[\"LankaBell\",\"BillDesk\"]", List.class); 
+0

I + 1 вам, но вы действительно должны использовать пример с общим типом для этого. Вы не можете получить список с вашим примером! –

+0

Хорошая точка, @TomCarchrae. Я предположил, что это будет достаточно безопасно для рассматриваемого массива. Очевидно, что мой код не идеален (например, 'ObjectMapper', вероятно, следует повторно использовать, проверять, что исключения должны обрабатываться, использование параметризованного типа с проблемами литья может быть нежелательным и с использованием raw-типа, значение для десериализации, вероятно, будет переменной и т. Д.), , но это быстрый фрагмент того, насколько легко использовать Джексона. – superEb

2
String input = "[\"LankaBell\",\"BillDesk\"]"; 

// net.sf.json.JSONArray 
JSONArray jsonArray = JSONArray.fromObject(input); 

List<String> list = new ArrayList<String>(); 

for (Object o : jsonArray) { 
    list.add((String) o); 
} 

log.debug(list); 
+0

@Yurii Shylov поставил больше работы в [его ответ] (http://stackoverflow.com/questions/18190001/how-to-convert-json-string-with-square-brackets-to-list/18190569#answer-18190382); его ответ выше. – daveloyall

+0

Спасибо daveloyall за перенаправление на решение Yurii, +1 за вашу честность – Prateek

Смежные вопросы