用于序列化被证明是非常容易和防弹的。之后使用Apache。在还有方法。Gson
commons-lang3 = 3.1
escapeEcmaScript
3.2
escapeJson
import com.google.api.client.json.GenericJson;
import com.google.api.client.util.Key;
import com.google.gson.Gson;
import org.apache.commons.lang3.StringEscapeUtils;
public class MyJson extends GenericJson {
@Key("commands")
public String commands;
public String serialize() throws IOException {
Gson gson = new Gson();
String g = gson.toJson(this);
return StringEscapeUtils.escapeEcmaScript(g);
}
}
这将生成转义的 JSON:
{\"commands\":\"ls -laF\\ndu -h\"}
然后反序列化非常简单:
protected MyJson deserialize(String str) throws IOException {
String json = StringEscapeUtils.unescapeEcmaScript(str);
JsonObjectParser parser = (new JacksonFactory()).createJsonObjectParser();
return parser.parseAndClose(new StringReader(json), MyJson.class);
}
该方法并不复杂,它执行以下替换:escapeEcmaScript
{"'", "\\'"},
{"\"", "\\\""},
{"\\", "\\\\"},
{"/", "\\/"}
但至少是我不必担心的事情。