1

2 つの Java JSON 文字列を手動で追加したいので、最初の JSON 文字列の"}"を削除してコンマ","に置き換え、2 番目の JSON 文字列の最初の"{"を削除する必要があります。これは私のプログラムです

import java.util.Map;
import org.codehaus.jackson.type.TypeReference;
public class Hi {
    private static JsonHelper jsonHelper = JsonHelper.getInstance();
    public static void main(String[] args) throws Exception {

        Map<String, Tracker> allCusts = null;

String A = "{\"user5\":{\"Iden\":4,\"Num\":1},\"user2\":{\"Iden\":5,\"Num\":1}}";

String B = "{\"user1\":{\"Iden\":4,\"Num\":1},\"user3\":{\"Iden\":6,\"Num\":1},\"user2\":{\"Iden\":5,\"Num\":1}}";

        String totalString = A + B;
        if (null != totalString) {
            allCusts = (Map<String, Tracker>) jsonHelper.toObject(
                    totalString, new TypeReference<Map<String, Tracker>>() {
                    });

        }
        System.out.println(allCusts);
    }
}

2本の弦を足す場合 A+B

A の "}" の最後の文字を削除して "," に置き換え、 B の "{" の最初の文字を削除します。

SO これは のように見えるはずです。

String A = "{\"user5\":{\"Iden\":4,\"Num\":1},\"user2\":{\"Iden\":5,\"Num\":1},";

String B = "\"user1\":{\"Iden\":4,\"Num\":1},\"user3\":{\"Iden\":6,\"Num\":1},\"user2\":{\"Iden\":5,\"Num\":1}}";

私が試してみました

String  Astr = A.replace(A.substring(A.length()-1), ",");
String  Bstr = B.replaceFirst("{", "");

String totalString =  Astr + Bstr ;

これで私は得ていました

スレッド「メイン」の例外 java.util.regex.PatternSyntaxException: 不正な繰り返し

提案してください 。

4

3 に答える 3

5

{は正規表現の制御文字でありreplaceFirst、最初の引数として正規表現の文字列表現を取る{ため、制御文字として扱われないようにエスケープする必要があります。

String  Bstr = B.replaceFirst("\\{", "");

文字列のどちらかの端から文字を切り取ろうとしているだけなので、ここで置換メソッドを使用するのは本当にやり過ぎだと思います。これも同様に機能するはずです:

String totalString = A.substring(0, A.length()-1) + "," + B.substring(1);
于 2012-11-05T04:32:32.370 に答える
1

もちろん、正規表現はこれにはあまり適していないように見えます。しかし、以下はうまくいくようです:

String str = "{..{...}..}}";
str = str.replaceFirst("\\{", "");
str = str.replaceFirst("}$", ","); 
System.out.println(str);

出力:

..{...}..}、

于 2012-11-05T04:43:06.093 に答える
0

最初の 2 つのステートメントに問題があります。メソッド0の開始インデックスとして追加し、そのままにしておきます。一致するパターンにエスケープ char として配置し、2 番目のステートメントで置換値として ut asubstringを入力します。\\,

String  Astr = A.substring(0, A.length()-1);//truncate the ending `}`
String  Bstr = B.replaceFirst("\\{", ",");//replaces first '{` with a ','
String totalString =  Astr + Bstr ;

注意:もっと良い方法がありますが、私はあなたの発言を修正しようとしています.

于 2012-11-05T04:40:47.577 に答える