Есть ли лучший способ разделить эту строку на подстроки?
Я пытаюсь извлечь "first_name"
а также "last_name"
из длинной строки информации, которая выглядит так:
{
"123123123": {
"id": "12321312****",
"email": "***************",
"first_name": "Marcus",
"gender": "male",
"last_name": "Bengtsson",
"link": "https://www.facebook.com/app_scoped_user_id/123123123/",
"locale": "en_EN",
"middle_name": "Peter",
"name": "Marcus Peter Bengtsson"
}
}
То, как я это делаю (что, вероятно, ужасно неправильно и довольно плохое решение), заключается в том, что я сначала извлекаю подстроку из "first_name"
в "link"
с этим кодом:
String subStr = str.substring(str.indexOf("first_name"), str.lastIndexOf("link"));
Тогда я получаю:
first_name":"Marcus","gender":"male","last_name":"Bengtsson","
Затем я делаю то же самое, но из ":"
в "gender"
чтобы получить "first_name
:
String firstNameOfUser = subStr.substring(subStr.indexOf(":")+2, subStr.lastIndexOf("gender")-3);
Тогда то же самое для "last_name"
:
String lastNameOfUser = subStr.substring(subStr.indexOf(""last_name"")+12, subStr.lastIndexOf(",")-1);
И, наконец, я добавляю обе строки с пробелом между ними:
String nameOfUser = new StringBuilder().append(firstNameOfUser).append(" ").append(lastNameOfUser).toString();
И тогда я получаю:
Marcus Bengtsson
Вероятно, есть гораздо лучший способ сделать это, но я не могу понять, как это сделать.
4 ответа
Это похоже на JSON, поэтому было бы намного лучше проанализировать его как таковой, используя один из множества доступных анализаторов, а затем извлечь данные.
Данная строка является JSON, используйте JSONParser, чтобы проанализировать ее в json, а затем извлечь необходимые данные.
Это JSON? перейдите по этой ссылке Пример JSON
nameOfUser = 123123123.first_name + " " + 123123123.last_name;
Я надеюсь, что это поможет вам
Как писал @Crozin, это выглядит как json, но если вы не можете разобрать его таким образом, вы всегда можете использовать регулярные выражения. Просто используйте Matcher, Pattern с регулярным выражением ^.*\"first_name\":\"([a-zA-Z]+)\".*\"last_name\":\"([a-zA-Z]+)\".*$
,