Как вырезать эту строку и поместить в массив? - PullRequest
0 голосов
/ 23 января 2012

допустим, у меня есть такая строка

[{ "name" : "Ronald" , "firstname" : "Ruck"} , { "name" : "Yunchin" , "firstname" : "Cha"} , { "name" : "Klaus" , "firstname" : "Mixer"}]

Иногда строка короче / длиннее, важно то, что в начале есть [{и в конце}]. Я хотел бы прочитать только имя и имя, поместить имя + имя в одну строку, а затем поместить каждую строку имя + имя-имя в массив. Ок, звучит странно? Если бы я повторял свой новый массив с этими именами, то должен был быть вывод: Рональд Рак, Юнчин Ча, Клаус Миксер ... Есть идеи? Я знаю кое-что с регулярным выражением, но я не очень хорош в этом. Спасибо!

Edit: Да, это выглядит как Json. Но если я использую читатель json, например http://code.google.com/p/json-simple/, я получаю сообщение об ошибке: Exception in thread "main" java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject Сначала я попробовал его, потому что в начале есть «[», а в конце «]». Без этого я получаю: Unexpected token COMMA(,) at position 44. Так что, может быть, это не настоящий JSON? Я тоже могу попробовать http://jackson.codehaus.org/, но я не уверен, что это сработает.

Edit2: Хорошо, все хорошо :) С json-simple все работает, просто нужно правильно использовать JSONArray. Решение с Gson Lib тоже хорошо, спасибо всем.

1 Ответ

4 голосов
/ 23 января 2012

Указанная вами строка является допустимой строкой json. Вы можете проверить действительность здесь . Вы можете использовать библиотеку Gson для анализа строки json в java.

Прочтите это Учебник , прежде чем мой код будет иметь для вас больше смысла.

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;

String json1 = "[{\"Name\":\"Ronald\",\"Firstname\":\"Reagan\"},{\"Name\":\"Chris\",\"Firstname\":\"Jeoff\"}]";
JsonElement json = new JsonParser().parse(json1);
JsonArray array= json.getAsJsonArray();    
Iterator iterator = array.iterator();    
while(iterator.hasNext()){

JsonElement json2 = (JsonElement)iterator.next();

Gson gson = new Gson();
GetResult gresult = gson.fromJson(json2, GetResult.class);
System.out.println("Name:" + gresult.getName());
System.out.println("FirstName:" + gresult.getFirstname());

Теперь соответствующий Getter and Setter class для вышеуказанного кода:

 public String Name;
 public String Firstname; //Note the variable names are same as the name in Json String.

 public String getFirstname() {
 return Firstname;
 }
 public String getName() {
 return Name;
 }

Выход =

Имя: Ronald

FirstName: Рейган

Имя: Chris

FirstName: Jeoff

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...