Строка в формате JSON в массив строк - PullRequest
2 голосов
/ 27 января 2011

Я использую простой php API (который я написал), который возвращает строку в формате JSON, такую ​​как:

[["Air Fortress","5639"],["Altered Beast","6091"],["American Gladiators","6024"],["Bases Loaded II: Second Season","5975"],["Battle Tank","5944"]]

Теперь у меня есть строка, содержащая строку в формате JSON, но мне нужно ее преобразоватьна два массива String, один для имени и один для идентификатора.Есть ли какие-нибудь быстрые пути для достижения этой цели?

1 Ответ

6 голосов
/ 27 января 2011

Вы можете использовать библиотеку org.json , чтобы преобразовать вашу строку json в JSONArray, который затем можно будет повторить.

Например:

String jsonString = "[[\"Air Fortress\",\"5639\"],[\"Altered Beast\",\"6091\"],[\"American Gladiators\",\"6024\"],[\"Bases Loaded II: Second Season\",\"5975\"],[\"Battle Tank\",\"5944\"]]";

List<String> names = new ArrayList<String>();
List<String> ids = new ArrayList<String>();
JSONArray array = new JSONArray(jsonString);
for(int i = 0 ; i < array.length(); i++){
    JSONArray subArray = (JSONArray)array.get(i);
    String name = (String)subArray.get(0);
    names.add(name);
    String id = (String)subArray.get(1);
    ids.add(id);
}

//to convert the lists to arrays
String[] nameArray = names.toArray(new String[0]);
String[] idArray = ids.toArray(new String[0]);

Вы можете даже использовать регулярное выражение для выполнения работы, хотя гораздо лучше использовать библиотеку json для анализа json:

List<String> names = new ArrayList<String>();
List<String> ids = new ArrayList<String>();
Pattern p = Pattern.compile("\"(.*?)\",\"(.*?)\"") ;
Matcher m = p.matcher(s);
while(m.find()){
    names.add(m.group(1));
    ids.add(m.group(2));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...