错误:意外的Char javax.json

错误:意外的Char javax.json,java,json,Java,Json,我正在尝试阅读这个JSON代码 { "metadata": { "clientTransactionId": "", "serverTransactionId": "20160621101521362-domainrobot-demo.routing-18997-0" }, "responses": [ { "domainName": "test.la", "domainNameUnicode": "test.la", "d

我正在尝试阅读这个JSON代码

{
  "metadata": {
    "clientTransactionId": "",
    "serverTransactionId": "20160621101521362-domainrobot-demo.routing-18997-0"
  },
  "responses": [
    {
      "domainName": "test.la",
      "domainNameUnicode": "test.la",
      "domainSuffix": "la",
      "earlyAccessStart": null,
      "extension": "la",
      "generalAvailabilityStart": "2000-01-01T00:00:00Z",
      "landrushStart": null,
      "launchPhase": "generalAvailability",
      "registrarTag": null,
      "status": "registered",
      "sunriseStart": null,
      "transferMethod": "authInfo"
    }
  ],
  "status": "success",
  "warnings": []
}
使用我的Java程序:

import javax.json.*;
import java.nio.charset.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.*;

public class Main {

    public static String readFile(String path, Charset encoding) throws IOException 
    {
      byte[] encoded = Files.readAllBytes(Paths.get(path));
      return new String(encoded, encoding);
    }

    public static void main(String[] args) throws IOException {
        String jsonData = readFile("/home/maltepraktikant/workspace/DomainCreator/bin/JsonData.txt", StandardCharsets.UTF_8);
        JsonReader jsonreader = Json.createReader(new StringReader(jsonData));
        JsonObject object = jsonreader.readObject();
        System.out.println(object);
        jsonreader.close();

        }
}
我尝试过不同的方法,但还没有找到解决办法。它只是给了我一个错误:

Exception in thread "main" javax.json.stream.JsonParsingException: Unexpected char 65.279 at (line no=1, column no=1, offset=0)
    at org.glassfish.json.JsonTokenizer.unexpectedChar(JsonTokenizer.java:532)
    at org.glassfish.json.JsonTokenizer.nextToken(JsonTokenizer.java:415)
    at org.glassfish.json.JsonParserImpl$NoneContext.getNextEvent(JsonParserImpl.java:222)
    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:101)
    at Main.main(Main.java:19)

有人有什么想法吗?

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

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响应并在将其解析为对象之前首先替换所有新行

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字符串中,null值不在引号中(例如:“earlyAccessStart”:null)。将它们保留在引号中可以解决问题


注意:在我的例子中,通过valitor验证json字符串一次错误是由于缺少值或键的引号。在json字符串中,null值不在引号中(例如:“earlyAccessStart”:null)。将它们保留在引号中可以解决问题


注意:通过valitor验证json字符串一次

谢谢,但我已经找到了解决方案。我以前用Libre Office打开过JsonData.txt,所以它添加了一些标题。我用gedit创建了一个新的JsonData.txt来修复它。谢谢,但我已经找到了一个解决方案。我以前用Libre Office打开过JsonData.txt,所以它添加了一些标题。我用gedit创建了一个新的JsonData.txt来修复它。