1

我想手动添加两个 java JSON 字符串,所以为此我需要删除“}”并将其替换为第一个 JSON 字符串的逗号“,”并删除第二个 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);
    }
}

当添加两个字符串 A + B

我想删除 A 中 "}" 的最后一个字符并将其替换为 "," 并删除 B 中 "{" 的第一个字符。

所以这应该看起来像。

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

你的前两个陈述中的一些问题。在方法中添加0为起始索引substring并离开。将\\作为转义字符放入匹配模式中,并将,第二个语句中的 ut a 作为替换值。

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 回答