Есть ли лучший способ разделить эту строку на подстроки?

Я пытаюсь извлечь "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]+)\".*$,

Другие вопросы по тегам