0

次のような長い文字列の情報から"first_name"andを抽出しようとしています。"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"toから部分文字列を抽出することです。"link"

String subStr = str.substring(str.indexOf("first_name"), str.lastIndexOf("link"));

それから私は得る:

first_name":"Marcus","gender":"male","last_name":"Bengtsson","

次に、同じことを行いますが、":"to"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

4 に答える 4

8

これはJSONのように見えるため、多くの利用可能なパーサーの 1 つを使用して JSON として解析し、データを抽出する方がはるかに優れています。

于 2015-05-26T07:39:53.650 に答える
0

指定された文字列は JSON です。JSONParserを使用してそれを json に解析し、必要なデータを抽出します。

于 2015-05-26T07:55:03.040 に答える
-1

@Crozin が書いたように、json のように見えますが、この方法で解析できない場合は、いつでも正規表現を使用できます。正規表現でMatcher、Patternを使用するだけ^.*\"first_name\":\"([a-zA-Z]+)\".*\"last_name\":\"([a-zA-Z]+)\".*$です。

于 2015-05-26T07:42:44.713 に答える