Java - 如何使用Gson解析json文件

标签 java json gson

我有一个像这样的简单 json 文件

{ 
  "user":"giovanni"
}

这是我用java编写的类:

package maven.project;

import java.io.*;
import com.google.gson.*;

public class Prova {
    public static void main(String[] args)throws JsonSyntaxException, 
     JsonIOException, FileNotFoundException{

        String path = "/Users/matte/Desktop/project/src/main/java/maven/project/1.json";
        BufferedReader bufferedReader = new BufferedReader(new FileReader(path));
        Gson gson = new Gson();
        JsonObject js = gson.fromJson(bufferedReader, JsonObject.class);
        String user =  js.get("user").getAsString();
        System.out.println("user: " + user);
    }
}

但是运行它我发现这个错误

Exception in thread "main" com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated object at line 3 column 26
        at com.google.gson.Gson.fromJson(Gson.java:809)
        at com.google.gson.Gson.fromJson(Gson.java:734)
        at Prova.main(Prova.java:11)
Caused by: com.google.gson.stream.MalformedJsonException: Unterminated object at line 3 column 26
        at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1310)

..

如何解决?

最佳答案

提供的测试通过,所以我建议你捕获异常可能对调试有一点帮助:

@RunWith(BlockJUnit4ClassRunner.class)
public class HttpServerTest {

    @Test
    public void test() throws FileNotFoundException {

        String path = "test.json";
        BufferedReader bufferedReader = new BufferedReader(new FileReader(path));

        Gson gson = new Gson();
        JsonObject js = gson.fromJson(bufferedReader, JsonObject.class);
        String user = js.get("user").getAsString();
        assertEquals("giovanni", user);
    }

}

关于Java - 如何使用Gson解析json文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51920700/

相关文章:

java.util.concurrent 、示例、教程和代码

java - 调整 apache commons 日志的日志级别?

javascript - 带数据库的 AJAX Servlet

java 整数处理

Json 模式仅验证数组中的第一个元素

javascript - 如何使用 jQuery 或 JavaScript 重复 div?

javascript - 如何使用 jsonPath 或替代方法从 JSON 结构中的 childNode 查找 parentNode?

java - 防止Gson在反序列化数字时将整数转换为小数

android-studio - 无法为接口(interface) retrofit2.http.Url 调用无参数构造函数。为这个类型注册一个Gson的InstanceCreator来解决这个问题

java - GSON 预期为 BEGIN_ARRAY,但实际为 STRING