预计BEGIN_OBJECT但在Gson中是STRING

时间:2018-01-23 20:33:30

标签: java json gson

您好我尝试用GSON解析一些JSON,它使用数字作为键。 我参考了帖子,但它给出了一些错误,我不知道为什么。

How to convert json objects with number as field key in Java?

我也看到帖子但仍无法解决我的问题。

"Expected BEGIN_OBJECT but was STRING at line 1 column 1"

enter image description here

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        Gson gson = new Gson();

        Type type = new TypeToken<HashMap<String, HashMap<String, String>>>() {}.getType();
        Map<String, Map<String, String>> map = gson.fromJson("./src/main/resources/input.json", type);

    }
}

json文件是

{
  "1":{"id":"1"}
}

1 个答案:

答案 0 :(得分:3)

fromJson方法没有收到文件名,它会收到一个实际的JSON:look at the docs here

但是有一个overload会收到一个Reader:

try (FileReader reader = new FileReader("./src/main/resources/input.json"))
{
    map = gson.fromJson(reader, type)
}
catch (...) { ... }