Java 将无效Json转换为有效Json的方法

Java 将无效Json转换为有效Json的方法,java,json,Java,Json,我正在与SonicWall路由器合作一个项目。我从中得到的响应是json格式的。我在解析它们等方面没有问题,但似乎有一种情况,软件会返回一个无效的json作为响应。以下是一个例子: { "success": false, "reboot_required": false, "status": [ { "cli": [ { "command": [ { "token": "no" }, { "token

我正在与SonicWall路由器合作一个项目。我从中得到的响应是json格式的。我在解析它们等方面没有问题,但似乎有一种情况,软件会返回一个无效的json作为响应。以下是一个例子:

{
    "success": false,
    "reboot_required": false,
    "status": [
        {
            "cli": [
                { "command": [ { "token": "no" }, { "token": "nat-policy" }, { "token": "id", "error": true }, { "token": "10", "error": true } ] },
                { "command": [ { "token": "end" } ] }
            ],
            "info": [
                 { "type": "error", "code": "CLI_E_NOT_FOUND", "message": "Nat Policy not found.
" }
            ]
        }
    ]
}
请注意,消息未正确关闭,但更改了一行?这会导致以下parsingException:

Exception in thread "main" javax.json.stream.JsonParsingException: Unexpected char 13 at (line no=11, column no=97, offset=447)
    at org.glassfish.json.JsonTokenizer.unexpectedChar(JsonTokenizer.java:532)
    at org.glassfish.json.JsonTokenizer.readString(JsonTokenizer.java:189)
    at org.glassfish.json.JsonTokenizer.nextToken(JsonTokenizer.java:376)
    at org.glassfish.json.JsonParserImpl$ObjectContext.getNextEvent(JsonParserImpl.java:261)
    at org.glassfish.json.JsonParserImpl$StateIterator.next(JsonParserImpl.java:172)
    at org.glassfish.json.JsonParserImpl.next(JsonParserImpl.java:149)
    at org.glassfish.json.JsonReaderImpl.readObject(JsonReaderImpl.java:177)
    at org.glassfish.json.JsonReaderImpl.readArray(JsonReaderImpl.java:143)
    at org.glassfish.json.JsonReaderImpl.readObject(JsonReaderImpl.java:180)
    at org.glassfish.json.JsonReaderImpl.readArray(JsonReaderImpl.java:143)
    at org.glassfish.json.JsonReaderImpl.readObject(JsonReaderImpl.java:180)
    at org.glassfish.json.JsonReaderImpl.readObject(JsonReaderImpl.java:103)

有没有办法将其转换为有效的json

获取json响应并在将其解析为object之前首先替换所有新行

response.replaceAll("\r?\n", "");
使用
GSON
API的示例代码

    String json = "{\"msg\" : \"Hello \n World\"}";
    System.out.println(json);

    json = json.replaceAll("\r?\n", "");

    Map<String, String> map = new Gson().fromJson(json, new TypeToken<Map<String, String>>(){}.getType());
    System.out.println("Actual message:" + map.get("msg"));

如何解析json?您正在使用什么API?您的“
”Nat策略未找到
没有以双引号结尾,因此您需要更新它以“.”结尾。这是一个好主意,但用“\\n”之类的内容替换可能会更整洁:这样,您将保留换行符。
{"msg" : " Hello 
 World"}
Actual message: Hello  World