Java 修剪JsonNode中的所有字符串值

Java 修剪JsonNode中的所有字符串值,java,json,playframework,Java,Json,Playframework,我需要修剪所有的字符串值 { "startDate": "2015-06-29", "endDate": "2015-07-04", "category": "VIP ", "name": " govind", age: 10, "place": " goa " } 我正在做这件事 JsonNode json = request().body().asJson(); CLassName cl = Json.fro

我需要修剪所有的字符串值

{   
   "startDate": "2015-06-29",
   "endDate": "2015-07-04",
    "category": "VIP ",
    "name": " govind",
    age: 10,
    "place": " goa "
}                
我正在做这件事

JsonNode json = request().body().asJson();
CLassName cl = Json.fromJson(json , ClassName.class);
并在
ClassName


建议任何其他好的方法,因为我知道这不是一个好方法,但是改变二传手不是正确的方法。因为您将无法再次创建完整的对象(即使它是必需的)。您可以编写一个单独的Trimmer类来获取该对象并对其进行修剪。或者同一类中的某个函数。我更喜欢修剪类

试试这个:

public static void main(String[] args) {
    String json =
          "{"
        + "   \"startDate\": \"2015-06-29\","
        + "   \"endDate\": \"2015-07-04\","
        + "   \"category\": \"VIP \","
        + "   \"name\": \" govind\","
        + "   age: 10,"
        + "   \"place\": \" goa \""
        + "}";
    Type stringStringMap = new TypeToken<Map<String, String>>(){}.getType();
    Map<String, String> map = new Gson().fromJson(json, stringStringMap);
    Map<String, String> trimed = map.entrySet().stream()
        .map(e -> new AbstractMap.SimpleEntry<>(e.getKey().trim(), e.getValue().trim()))
        .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()));
    System.out.println(trimed);
    // -> {endDate=2015-07-04, name=govind, place=goa, category=VIP, age=10, startDate=2015-06-29}
}
publicstaticvoidmain(字符串[]args){
字符串json=
"{"
+““开始日期”:“2015-06-29”
+“\“结束日期\:\“2015-07-04\”,”
+“\”类别\“:\”贵宾\“
+“\'name\:\'govind\”,”
+年龄:10岁
+““地点”:“果阿”
+ "}";
类型StringMap=newTypeToken(){}.getType();
Map Map=new Gson().fromJson(json,StringMap);
Map trimed=Map.entrySet().stream()
.map(e->new AbstractMap.SimpleEntry(e.getKey().trim(),e.getValue().trim())
.collect(Collectors.toMap(e->e.getKey(),e->e.getValue());
系统输出打印项次(修剪);
//->{endDate=2015-07-04,name=govind,place=goa,category=VIP,age=10,startDate=2015-06-29}
}

如果您可以确认JSON的值中没有引号,那么为了获得更好的性能,我会对原始文本而不是解析版本进行修剪:

val text = request.body.asText
// RegEx explanation:
// space followed by asterisk means any number of spaces
// backward slash escapes the following character 
val trimmed = text.map(_.replaceAll(" *\" *", "\""))
import play.api.libs.json.Json
val json = Json.parse(trimmed)
Java版本:

import play.api.libs.json.*;

String text = request().body().asText();
String trimmed = text.replaceAll(" *\" *", "\"");
JsValue json = Json.parse(trimmed);

@bjfetcher,但我正在用Java做答案中添加了Java版本。:)