java的JSON解析器错误:

java的JSON解析器错误:,java,json,parsing,Java,Json,Parsing,我想解析一个json文件,下面是我的代码: import org.json.JSONArray; import org.json.JSONObject; public class principale { public static void main(String[] args) { // TODO Auto-generated method stub String fichier ="C:\\listesanscoord.json";

我想解析一个json文件,下面是我的代码:

import org.json.JSONArray;
import org.json.JSONObject;

public class principale {


    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String fichier ="C:\\listesanscoord.json";
        JSONObject obj = new JSONObject("fichier");
        String pageName = obj.getJSONObject("pageInfo").getString("pageName");

        JSONArray arr = obj.getJSONArray("oaci");
        for (int i = 0; i < arr.length(); i++)
        {
            String url = arr.getJSONObject(i).getString("url");

        }
    }

}
import org.json.JSONArray;
导入org.json.JSONObject;
公共阶级原则{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
String fichier=“C:\\listensanscoord.json”;
JSONObject obj=新的JSONObject(“fichier”);
String pageName=obj.getJSONObject(“pageInfo”).getString(“pageName”);
JSONArray arr=obj.getJSONArray(“oaci”);
对于(int i=0;i
这是我的json文件: 我有以下错误:

Exception in thread "main" org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1]
    at org.json.JSONTokener.syntaxError(JSONTokener.java:433)
    at org.json.JSONObject.<init>(JSONObject.java:198)
    at org.json.JSONObject.<init>(JSONObject.java:325)
    at metar.principale.main(principale.java:13)
线程“main”org.json.JSONException中的异常:JSONObject文本必须在1[字符2第1行]处以“{”开头
位于org.json.JSONTokener.syntaxError(JSONTokener.java:433)
位于org.json.JSONObject(JSONObject.java:198)
位于org.json.JSONObject(JSONObject.java:325)
main(principale.java:13)

有人能帮我吗?我找不到问题出在哪里,谢谢。

如果你的json不是以“{”开头,那么它就不是json了……这是异常消息的主要解释


重新格式化json文档并重试。

如果您的json不是以“{”开头的,则它根本不是json,这是异常消息的主要解释


重新格式化json文档并重试。

异常非常明显(仅此一次!)。内容必须以
{
[
开头,因为它必须至少定义根对象或数组

编辑

您发布的JSON内容实际上是正确的(很好,您已经通过web实用程序验证过了),因为它定义了一个元素数组。问题源于对JSON使用Java API。事实上,正如@nogard在他的回答中所示,JSONObject字符串构造函数期望的是一些JSON内容,而不是文件名。 (请参阅)。因此,解析器试图将文件名解释为一些JSON内容,因此失败(因为文件名“
fichier
”不是有效的JSON字符串)

因此,您应该先通过inputstream获取文件内容,然后在序列化实用程序的帮助下构建JSON对象:

String json = IOUtils.toString(JsonParsing.class.getResourceAsStream("C:\\listesanscoord.json"));
JSONObject jsonObj = (JSONObject) JSONSerializer.toJSON( json ); 

例外情况非常明显(只有一次!)。内容必须以
{
[
开头,因为它必须至少定义根对象或数组

编辑

您发布的JSON内容实际上是正确的(很好,您已经通过web实用程序验证过了),因为它定义了一个元素数组。问题源于对JSON使用Java API。事实上,正如@nogard在他的回答中所示,JSONObject字符串构造函数期望的是一些JSON内容,而不是文件名。 (请参阅)。因此,解析器试图将文件名解释为一些JSON内容,因此失败(因为文件名“
fichier
”不是有效的JSON字符串)

因此,您应该先通过inputstream获取文件内容,然后在序列化实用程序的帮助下构建JSON对象:

String json = IOUtils.toString(JsonParsing.class.getResourceAsStream("C:\\listesanscoord.json"));
JSONObject jsonObj = (JSONObject) JSONSerializer.toJSON( json ); 

问题在于这些方面:

String fichier ="C:\\listesanscoord.json";
JSONObject obj = new JSONObject("fichier");
您通常应该传递文件的内容,而不仅仅是文件名(或“fichier”):


问题在于这些方面:

String fichier ="C:\\listesanscoord.json";
JSONObject obj = new JSONObject("fichier");
您通常应该传递文件的内容,而不仅仅是文件名(或“fichier”):


在对
@nogard
答案的扩展中,我检测到文件中的JSON文本中存在错误,JSON字符串类似于java mapjavascript对象有键值对,文件中的键值定义错误,应该用双引号(“”)表示所以键值对看起来像“key”:“value String”“key”:value Number。有关更多信息,请查看

修改后,json将如下所示

[
    {
        "oaci": "LFXA",
        "aeroport": "Aérodrome d'Ambérieu",
        "url": "https://fr.wikipedia.org/wiki/A%C3%A9rodrome_d%27Amb%C3%A9rieu",
        "commune": "Chateau-Gaillard, Ambronay"
    }
    //more json objects 
]

如果您像上面那样修改json文件将解决您的问题。

扩展到
@nogard
回答我检测到文件中的json文本中存在错误,json字符串类似于java映射javascript对象有键值对,在您的文件中,键值是define wron实际上,它应该是双引号(“”),所以键值对看起来像“key”:“value String”或“key”:value Number。有关更多信息,请查看

修改后,json将如下所示

[
    {
        "oaci": "LFXA",
        "aeroport": "Aérodrome d'Ambérieu",
        "url": "https://fr.wikipedia.org/wiki/A%C3%A9rodrome_d%27Amb%C3%A9rieu",
        "commune": "Chateau-Gaillard, Ambronay"
    }
    //more json objects 
]

如果您像上面那样修改json文件,将解决您的问题。

我看到您的ListSanCoord.json及其包含的数据不是json格式,有很多问题我看到您的ListSanCoord.json及其包含的数据不是json格式,也有很多问题ListSanCoord.json文件不是json格式文件listensCoord.json不在json中我按照你告诉我的那样更改了我的文件,但仍然存在问题是这个文件仍然有一些错误尝试通过你的json,你会看到哪些行包含错误。哦,是的,抱歉,现在看看。你的文件看起来很好,这个json应该可以与java代码一起工作。正如你所看到的,你的json不是一个json对象,而是一个json对象如果它是json对象的一部分,您需要创建
JSONArray
try
JSONArray jsonArrayObj=newjsonarray(jsonTxt)的对象
应该可以解决您的问题。我按照您告诉我的那样更改了我的文件,但仍然存在问题是,此文件仍然有一些错误尝试通过json,您将看到哪些行包含错误。哦,是的,抱歉,现在看看。您的文件看起来很好,此json应该可以与java代码一起工作。正如您所看到的,您的json不是一个json对象,而是instate这是一个json对象,您需要创建
JSONArray
try
JSONArray jsonArrayObj=new-JSONArray(jsonTxt);
应该可以解决您的问题。现在请查看我的文件,可以吗?或者not@user26480是的,您的文件现在是正确的