Java 读取Json文件,但键没有引号

Java 读取Json文件,但键没有引号,java,json,parsing,Java,Json,Parsing,我编写了以下代码来读取一个文件 JSONObject obj = (JSONObject)parser.parse(new FileReader(file.getPath())); 但当文件内容如下所示时出错 { needed:"something", other1:true, other2:"not important" } 错误消息位置1处出现意外字符(n)。 我怎样才能纠正它?谢谢有一个简单的Jackson库用于读取不带引号的字段 Obje

我编写了以下代码来读取一个文件

JSONObject obj = (JSONObject)parser.parse(new FileReader(file.getPath()));
但当文件内容如下所示时出错

{
 needed:"something",
 other1:true,
 other2:"not important"
}
错误消息
位置1处出现意外字符(n)。


我怎样才能纠正它?谢谢

有一个简单的Jackson库用于读取不带引号的字段

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
String value = "{" +
     " needed:\"something\"," +
     " other1:true," +
     " other2:\"not important\"" +
     "}";
Map items = objectMapper.readValue(value,  HashMap.class);
System.out.println("Got object " + items);
您可以将文件直接传递给readValue方法

Map items = objectMapper.readValue(new File(filePath),  HashMap.class);
您还可以指定自己的具体类,而不是HashMap

ConcreteClass items = objectMapper.readValue(new File(filePath),  ConcreteClass.class);
这是maven依赖项

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.11.1</version>
</dependency>

com.fasterxml.jackson.core
杰克逊核心
2.11.1

您拥有的文件不是JSON。您可能可以将其视为JavaScript并通过JS引擎运行,但修复损坏的输入是正确的方法。最简单的方法是从外部更正JSON格式并使用当前方法读取文件。