Java gson&x2B;json配对错误

Java gson&x2B;json配对错误,java,json,gson,Java,Json,Gson,我尝试使用gson解析JSON对象,如下所示: 第一,第二,第三,第四 我不断得到错误: Expected BEGIN_OBJECT but was STRING at line 1 column 2 我不认为这与它以一个“开头这一事实有任何关系,因为当我删除第一个和最后一个引号时,我在第2行第3列得到了错误预期名称 我的全部代码是,它很短 我基本上是想逆转,这是一个相关的问题 更新 File f=new文件(“/home/matthias/Workbench/SUTD/nytimes\u c

我尝试使用gson解析JSON对象,如下所示:

第一,第二,第三,第四

我不断得到错误:

Expected BEGIN_OBJECT but was STRING at line 1 column 2
我不认为这与它以一个
开头这一事实有任何关系,因为当我删除第一个和最后一个引号时,我在第2行第3列得到了错误
预期名称

我的全部代码是,它很短

我基本上是想逆转,这是一个相关的问题

更新
File f=new文件(“/home/matthias/Workbench/SUTD/nytimes\u corpus/wdtk parent/wdtk examples/JSON\u Output/user.JSON”);
字符串jsonTxt=null;
如果(f.exists())
{
InputStream is=newfileInputStream(“/home/matthias/Workbench/SUTD/nytimes_corpus/wdtk parent/wdtk examples/JSON_Output/user.JSON”);
jsonTxt=IOUtils.toString(is);
}
Gson json=new Gson();
Map Map=newhashmap();
map=(map)json.fromJson(jsonTxt,map.getClass());
系统输出打印项次(map);

根据您面临的错误,您需要从Json字符串中删除
,以便gson正确解析它

对于ex,对于json字符串,更正的字符串为:

{
  \"Rao\":[\"Q7293658\",\"\",\"Q7293657\",\"Q12953055\",\"Q3531237\",\"Q4178159\",\"Q1138810\",\"Q579515\",\"Q3365064\",\"Q7293664\",\"Q1133815\"],
  \"Hani Durzy\":[\"\"],
  \"Louise\":[\"\",\"Q1660645\",\"Q130413\",\"Q3215140\",\"Q152779\",\"Q233203\",\"Q7871343\",\"Q232402\",\"Q82547\",\"Q286488\",\"Q156723\",\"Q3263649\",\"Q456386\",\"Q233192\",\"Q14714149\",\"Q12125864\",\"Q57669\",\"Q168667\",\"Q141410\",\"Q166028\"],
  \"Reyna\":[\"Q7573462\",\"Q2892895\",\"Q363257\",\"Q151944\",\"Q3740321\",\"Q2857439\",\"Q1453358\",\"Q7319529\",\"Q733716\",\"Q16151941\",\"Q7159448\",\"Q5484172\",\"Q6074271\",\"Q1753185\",\"Q7319532\",\"Q5171205\",\"Q3183869\",\"Q1818527\",\"Q251862\",\"Q3840414\",\"Q5271282\",\"Q5606181\"]
}

根据您面临的错误,您需要从Json字符串中删除
,以便gson正确解析它

对于ex,对于json字符串,更正的字符串为:

{
  \"Rao\":[\"Q7293658\",\"\",\"Q7293657\",\"Q12953055\",\"Q3531237\",\"Q4178159\",\"Q1138810\",\"Q579515\",\"Q3365064\",\"Q7293664\",\"Q1133815\"],
  \"Hani Durzy\":[\"\"],
  \"Louise\":[\"\",\"Q1660645\",\"Q130413\",\"Q3215140\",\"Q152779\",\"Q233203\",\"Q7871343\",\"Q232402\",\"Q82547\",\"Q286488\",\"Q156723\",\"Q3263649\",\"Q456386\",\"Q233192\",\"Q14714149\",\"Q12125864\",\"Q57669\",\"Q168667\",\"Q141410\",\"Q166028\"],
  \"Reyna\":[\"Q7573462\",\"Q2892895\",\"Q363257\",\"Q151944\",\"Q3740321\",\"Q2857439\",\"Q1453358\",\"Q7319529\",\"Q733716\",\"Q16151941\",\"Q7159448\",\"Q5484172\",\"Q6074271\",\"Q1753185\",\"Q7319532\",\"Q5171205\",\"Q3183869\",\"Q1818527\",\"Q251862\",\"Q3840414\",\"Q5271282\",\"Q5606181\"]
}

根据您面临的错误,您需要从Json字符串中删除
,以便gson正确解析它

对于ex,对于json字符串,更正的字符串为:

{
  \"Rao\":[\"Q7293658\",\"\",\"Q7293657\",\"Q12953055\",\"Q3531237\",\"Q4178159\",\"Q1138810\",\"Q579515\",\"Q3365064\",\"Q7293664\",\"Q1133815\"],
  \"Hani Durzy\":[\"\"],
  \"Louise\":[\"\",\"Q1660645\",\"Q130413\",\"Q3215140\",\"Q152779\",\"Q233203\",\"Q7871343\",\"Q232402\",\"Q82547\",\"Q286488\",\"Q156723\",\"Q3263649\",\"Q456386\",\"Q233192\",\"Q14714149\",\"Q12125864\",\"Q57669\",\"Q168667\",\"Q141410\",\"Q166028\"],
  \"Reyna\":[\"Q7573462\",\"Q2892895\",\"Q363257\",\"Q151944\",\"Q3740321\",\"Q2857439\",\"Q1453358\",\"Q7319529\",\"Q733716\",\"Q16151941\",\"Q7159448\",\"Q5484172\",\"Q6074271\",\"Q1753185\",\"Q7319532\",\"Q5171205\",\"Q3183869\",\"Q1818527\",\"Q251862\",\"Q3840414\",\"Q5271282\",\"Q5606181\"]
}

根据您面临的错误,您需要从Json字符串中删除
,以便gson正确解析它

对于ex,对于json字符串,更正的字符串为:

{
  \"Rao\":[\"Q7293658\",\"\",\"Q7293657\",\"Q12953055\",\"Q3531237\",\"Q4178159\",\"Q1138810\",\"Q579515\",\"Q3365064\",\"Q7293664\",\"Q1133815\"],
  \"Hani Durzy\":[\"\"],
  \"Louise\":[\"\",\"Q1660645\",\"Q130413\",\"Q3215140\",\"Q152779\",\"Q233203\",\"Q7871343\",\"Q232402\",\"Q82547\",\"Q286488\",\"Q156723\",\"Q3263649\",\"Q456386\",\"Q233192\",\"Q14714149\",\"Q12125864\",\"Q57669\",\"Q168667\",\"Q141410\",\"Q166028\"],
  \"Reyna\":[\"Q7573462\",\"Q2892895\",\"Q363257\",\"Q151944\",\"Q3740321\",\"Q2857439\",\"Q1453358\",\"Q7319529\",\"Q733716\",\"Q16151941\",\"Q7159448\",\"Q5484172\",\"Q6074271\",\"Q1753185\",\"Q7319532\",\"Q5171205\",\"Q3183869\",\"Q1818527\",\"Q251862\",\"Q3840414\",\"Q5271282\",\"Q5606181\"]
}
试试这个

public class JsonTest {

    private String  jsonTxt = "{\"Rao\":[\"Q7293658\",\"\",\"Q7293657\",\"Q12953055\",\"Q3531237\","
                    + "\"Q4178159\",\"Q1138810\",\"Q579515\",\"Q3365064\",\"Q7293664\",\"Q1133815\"],"
                    + "\"Hani Durzy\":[\"\"],\"Louise\":[\"\",\"Q1660645\",\"Q130413\",\"Q3215140\","
                    + "\"Q152779\",\"Q233203\",\"Q7871343\",\"Q232402\",\"Q82547\",\"Q286488\","
                    + "\"Q156723\",\"Q3263649\",\"Q456386\",\"Q233192\",\"Q14714149\",\"Q12125864\""
                    + ",\"Q57669\",\"Q168667\",\"Q141410\",\"Q166028\"],\"Reyna\":[\"Q7573462\","
                    + "\"Q2892895\",\"Q363257\",\"Q151944\",\"Q3740321\",\"Q2857439\",\"Q1453358\","
                    + "\"Q7319529\",\"Q733716\",\"Q16151941\",\"Q7159448\",\"Q5484172\",\"Q6074271\""
                    + ",\"Q1753185\",\"Q7319532\",\"Q5171205\",\"Q3183869\",\"Q1818527\",\"Q251862\","
                    + "\"Q3840414\",\"Q5271282\",\"Q5606181\"]}";

    @SuppressWarnings("unchecked")
    @Test
    public void testJson() {
        Gson json = new Gson();
        Map<String, HashSet<String>> map = new HashMap<String, HashSet<String>>();
        map = (Map<String, HashSet<String>>) json.fromJson(jsonTxt, map.getClass());
        System.out.println(map);
    }
}
通过更新,我了解到您正在尝试从文件中读取JSON。我有自己的版本可以从文件中读取JSON。请检查

private static JsonObject   chartJson;

public static String readChartJsonFromJsonFile(String fileName) {
    try {
        JsonParser jsonParser = new JsonParser();

        // get json as buffer
        BufferedReader br = new BufferedReader(new FileReader(fileName));

        JsonElement element = jsonParser.parse(br);
        if (!(element instanceof JsonNull)) {
            chartJson = (JsonObject) element;
        }
    } catch (FileNotFoundException e) {
        LoggerManager.fatal("Error reading JSON from file.", JsonFileParser.class.getName());
    }
    return chartJson.toString();
}
文件中的我的JSON示例:

{
Reyna=[Q7573462, Q2892895, Q363257, Q151944, Q3740321, Q2857439, Q1453358, Q7319529, Q733716, Q16151941, Q7159448, Q5484172, Q6074271, Q1753185, Q7319532, Q5171205, Q3183869, Q1818527, Q251862, Q3840414, Q5271282, Q5606181], 

Rao=[Q7293658, , Q7293657, Q12953055, Q3531237, Q4178159, Q1138810, Q579515, Q3365064, Q7293664, Q1133815], 

Louise=[, Q1660645, Q130413, Q3215140, Q152779, Q233203, Q7871343, Q232402, Q82547, Q286488, Q156723, Q3263649, Q456386, Q233192, Q14714149, Q12125864, Q57669, Q168667, Q141410, Q166028], 

Hani Durzy=[]
}
{
   "xArray":[
      "1 Jan 2008",
      "1 Jan 2009",
      "1 Jan 2010",
      "1 Jan 2011",
      "1 Jan 2012",
      "1 Jan 2013",
      "1 Jan 2014"
   ],
   "yArray":[
      "38",
      "87",
      "45",
      "25",
      "67",
      "-37",
      "98"
   ]
}
试试这个

public class JsonTest {

    private String  jsonTxt = "{\"Rao\":[\"Q7293658\",\"\",\"Q7293657\",\"Q12953055\",\"Q3531237\","
                    + "\"Q4178159\",\"Q1138810\",\"Q579515\",\"Q3365064\",\"Q7293664\",\"Q1133815\"],"
                    + "\"Hani Durzy\":[\"\"],\"Louise\":[\"\",\"Q1660645\",\"Q130413\",\"Q3215140\","
                    + "\"Q152779\",\"Q233203\",\"Q7871343\",\"Q232402\",\"Q82547\",\"Q286488\","
                    + "\"Q156723\",\"Q3263649\",\"Q456386\",\"Q233192\",\"Q14714149\",\"Q12125864\""
                    + ",\"Q57669\",\"Q168667\",\"Q141410\",\"Q166028\"],\"Reyna\":[\"Q7573462\","
                    + "\"Q2892895\",\"Q363257\",\"Q151944\",\"Q3740321\",\"Q2857439\",\"Q1453358\","
                    + "\"Q7319529\",\"Q733716\",\"Q16151941\",\"Q7159448\",\"Q5484172\",\"Q6074271\""
                    + ",\"Q1753185\",\"Q7319532\",\"Q5171205\",\"Q3183869\",\"Q1818527\",\"Q251862\","
                    + "\"Q3840414\",\"Q5271282\",\"Q5606181\"]}";

    @SuppressWarnings("unchecked")
    @Test
    public void testJson() {
        Gson json = new Gson();
        Map<String, HashSet<String>> map = new HashMap<String, HashSet<String>>();
        map = (Map<String, HashSet<String>>) json.fromJson(jsonTxt, map.getClass());
        System.out.println(map);
    }
}
通过更新,我了解到您正在尝试从文件中读取JSON。我有自己的版本可以从文件中读取JSON。请检查

private static JsonObject   chartJson;

public static String readChartJsonFromJsonFile(String fileName) {
    try {
        JsonParser jsonParser = new JsonParser();

        // get json as buffer
        BufferedReader br = new BufferedReader(new FileReader(fileName));

        JsonElement element = jsonParser.parse(br);
        if (!(element instanceof JsonNull)) {
            chartJson = (JsonObject) element;
        }
    } catch (FileNotFoundException e) {
        LoggerManager.fatal("Error reading JSON from file.", JsonFileParser.class.getName());
    }
    return chartJson.toString();
}
文件中的我的JSON示例:

{
Reyna=[Q7573462, Q2892895, Q363257, Q151944, Q3740321, Q2857439, Q1453358, Q7319529, Q733716, Q16151941, Q7159448, Q5484172, Q6074271, Q1753185, Q7319532, Q5171205, Q3183869, Q1818527, Q251862, Q3840414, Q5271282, Q5606181], 

Rao=[Q7293658, , Q7293657, Q12953055, Q3531237, Q4178159, Q1138810, Q579515, Q3365064, Q7293664, Q1133815], 

Louise=[, Q1660645, Q130413, Q3215140, Q152779, Q233203, Q7871343, Q232402, Q82547, Q286488, Q156723, Q3263649, Q456386, Q233192, Q14714149, Q12125864, Q57669, Q168667, Q141410, Q166028], 

Hani Durzy=[]
}
{
   "xArray":[
      "1 Jan 2008",
      "1 Jan 2009",
      "1 Jan 2010",
      "1 Jan 2011",
      "1 Jan 2012",
      "1 Jan 2013",
      "1 Jan 2014"
   ],
   "yArray":[
      "38",
      "87",
      "45",
      "25",
      "67",
      "-37",
      "98"
   ]
}
试试这个

public class JsonTest {

    private String  jsonTxt = "{\"Rao\":[\"Q7293658\",\"\",\"Q7293657\",\"Q12953055\",\"Q3531237\","
                    + "\"Q4178159\",\"Q1138810\",\"Q579515\",\"Q3365064\",\"Q7293664\",\"Q1133815\"],"
                    + "\"Hani Durzy\":[\"\"],\"Louise\":[\"\",\"Q1660645\",\"Q130413\",\"Q3215140\","
                    + "\"Q152779\",\"Q233203\",\"Q7871343\",\"Q232402\",\"Q82547\",\"Q286488\","
                    + "\"Q156723\",\"Q3263649\",\"Q456386\",\"Q233192\",\"Q14714149\",\"Q12125864\""
                    + ",\"Q57669\",\"Q168667\",\"Q141410\",\"Q166028\"],\"Reyna\":[\"Q7573462\","
                    + "\"Q2892895\",\"Q363257\",\"Q151944\",\"Q3740321\",\"Q2857439\",\"Q1453358\","
                    + "\"Q7319529\",\"Q733716\",\"Q16151941\",\"Q7159448\",\"Q5484172\",\"Q6074271\""
                    + ",\"Q1753185\",\"Q7319532\",\"Q5171205\",\"Q3183869\",\"Q1818527\",\"Q251862\","
                    + "\"Q3840414\",\"Q5271282\",\"Q5606181\"]}";

    @SuppressWarnings("unchecked")
    @Test
    public void testJson() {
        Gson json = new Gson();
        Map<String, HashSet<String>> map = new HashMap<String, HashSet<String>>();
        map = (Map<String, HashSet<String>>) json.fromJson(jsonTxt, map.getClass());
        System.out.println(map);
    }
}
通过更新,我了解到您正在尝试从文件中读取JSON。我有自己的版本可以从文件中读取JSON。请检查

private static JsonObject   chartJson;

public static String readChartJsonFromJsonFile(String fileName) {
    try {
        JsonParser jsonParser = new JsonParser();

        // get json as buffer
        BufferedReader br = new BufferedReader(new FileReader(fileName));

        JsonElement element = jsonParser.parse(br);
        if (!(element instanceof JsonNull)) {
            chartJson = (JsonObject) element;
        }
    } catch (FileNotFoundException e) {
        LoggerManager.fatal("Error reading JSON from file.", JsonFileParser.class.getName());
    }
    return chartJson.toString();
}
文件中的我的JSON示例:

{
Reyna=[Q7573462, Q2892895, Q363257, Q151944, Q3740321, Q2857439, Q1453358, Q7319529, Q733716, Q16151941, Q7159448, Q5484172, Q6074271, Q1753185, Q7319532, Q5171205, Q3183869, Q1818527, Q251862, Q3840414, Q5271282, Q5606181], 

Rao=[Q7293658, , Q7293657, Q12953055, Q3531237, Q4178159, Q1138810, Q579515, Q3365064, Q7293664, Q1133815], 

Louise=[, Q1660645, Q130413, Q3215140, Q152779, Q233203, Q7871343, Q232402, Q82547, Q286488, Q156723, Q3263649, Q456386, Q233192, Q14714149, Q12125864, Q57669, Q168667, Q141410, Q166028], 

Hani Durzy=[]
}
{
   "xArray":[
      "1 Jan 2008",
      "1 Jan 2009",
      "1 Jan 2010",
      "1 Jan 2011",
      "1 Jan 2012",
      "1 Jan 2013",
      "1 Jan 2014"
   ],
   "yArray":[
      "38",
      "87",
      "45",
      "25",
      "67",
      "-37",
      "98"
   ]
}
试试这个

public class JsonTest {

    private String  jsonTxt = "{\"Rao\":[\"Q7293658\",\"\",\"Q7293657\",\"Q12953055\",\"Q3531237\","
                    + "\"Q4178159\",\"Q1138810\",\"Q579515\",\"Q3365064\",\"Q7293664\",\"Q1133815\"],"
                    + "\"Hani Durzy\":[\"\"],\"Louise\":[\"\",\"Q1660645\",\"Q130413\",\"Q3215140\","
                    + "\"Q152779\",\"Q233203\",\"Q7871343\",\"Q232402\",\"Q82547\",\"Q286488\","
                    + "\"Q156723\",\"Q3263649\",\"Q456386\",\"Q233192\",\"Q14714149\",\"Q12125864\""
                    + ",\"Q57669\",\"Q168667\",\"Q141410\",\"Q166028\"],\"Reyna\":[\"Q7573462\","
                    + "\"Q2892895\",\"Q363257\",\"Q151944\",\"Q3740321\",\"Q2857439\",\"Q1453358\","
                    + "\"Q7319529\",\"Q733716\",\"Q16151941\",\"Q7159448\",\"Q5484172\",\"Q6074271\""
                    + ",\"Q1753185\",\"Q7319532\",\"Q5171205\",\"Q3183869\",\"Q1818527\",\"Q251862\","
                    + "\"Q3840414\",\"Q5271282\",\"Q5606181\"]}";

    @SuppressWarnings("unchecked")
    @Test
    public void testJson() {
        Gson json = new Gson();
        Map<String, HashSet<String>> map = new HashMap<String, HashSet<String>>();
        map = (Map<String, HashSet<String>>) json.fromJson(jsonTxt, map.getClass());
        System.out.println(map);
    }
}
通过更新,我了解到您正在尝试从文件中读取JSON。我有自己的版本可以从文件中读取JSON。请检查

private static JsonObject   chartJson;

public static String readChartJsonFromJsonFile(String fileName) {
    try {
        JsonParser jsonParser = new JsonParser();

        // get json as buffer
        BufferedReader br = new BufferedReader(new FileReader(fileName));

        JsonElement element = jsonParser.parse(br);
        if (!(element instanceof JsonNull)) {
            chartJson = (JsonObject) element;
        }
    } catch (FileNotFoundException e) {
        LoggerManager.fatal("Error reading JSON from file.", JsonFileParser.class.getName());
    }
    return chartJson.toString();
}
文件中的我的JSON示例:

{
Reyna=[Q7573462, Q2892895, Q363257, Q151944, Q3740321, Q2857439, Q1453358, Q7319529, Q733716, Q16151941, Q7159448, Q5484172, Q6074271, Q1753185, Q7319532, Q5171205, Q3183869, Q1818527, Q251862, Q3840414, Q5271282, Q5606181], 

Rao=[Q7293658, , Q7293657, Q12953055, Q3531237, Q4178159, Q1138810, Q579515, Q3365064, Q7293664, Q1133815], 

Louise=[, Q1660645, Q130413, Q3215140, Q152779, Q233203, Q7871343, Q232402, Q82547, Q286488, Q156723, Q3263649, Q456386, Q233192, Q14714149, Q12125864, Q57669, Q168667, Q141410, Q166028], 

Hani Durzy=[]
}
{
   "xArray":[
      "1 Jan 2008",
      "1 Jan 2009",
      "1 Jan 2010",
      "1 Jan 2011",
      "1 Jan 2012",
      "1 Jan 2013",
      "1 Jan 2014"
   ],
   "yArray":[
      "38",
      "87",
      "45",
      "25",
      "67",
      "-37",
      "98"
   ]
}

您已经对所有的
字符进行了转义,并将整个JSON用引号括起来,就好像这是代码中的
字符串
常量一样(可能在某一点上存在)。但是您正在从磁盘上的文件读取此JSON-没有理由在专用JSON文件中转义引号


尝试删除外部的
字符,每个键和值周围都会出现
\
转义符。您也可以将JSON直接粘贴到任意数量的联机文件中进行双重检查。您的文件内容应该是有效的JSON;粘贴的内容不是。

您已经转义了所有的
字符,并将整个JSON用引号括起来,好像这是代码中的一个
字符串
常量(可能在某一点上)。但是您正在从磁盘上的文件读取此JSON-没有理由在专用JSON文件中转义引号


尝试删除外部的
字符,每个键和值周围都会出现
\
转义符。您也可以将JSON直接粘贴到任意数量的联机文件中进行双重检查。您的文件内容应该是有效的JSON;粘贴的内容不是。

您已经转义了所有的
字符,并将整个JSON用引号括起来,好像这是代码中的一个
字符串
常量(可能在某一点上)。但是您正在从磁盘上的文件读取此JSON-没有理由在专用JSON文件中转义引号


尝试删除外部的
字符,每个键和值周围都会出现
\
转义符。您也可以将JSON直接粘贴到任意数量的联机文件中进行双重检查。您的文件内容应该是有效的JSON;粘贴的内容不是。

您已经转义了所有的
字符,并将整个JSON用引号括起来,好像这是代码中的一个
字符串
常量(可能在某一点上)。但是您正在从磁盘上的文件读取此JSON-没有理由在专用JSON文件中转义引号


尝试删除外部的
字符,每个键和值周围都会出现
\
转义符。您也可以将JSON直接粘贴到任意数量的联机文件中进行双重检查。您的文件内容应该是有效的JSON;您粘贴的内容不是。

是否需要删除
的每个实例?”
在我的json字符串中,还是只有开头和结尾的那一个?不。只需要删除第一个和最后一个实例。我不认为这是原因,我只是尝试了一下,在第2行第3列得到了
期望的名称,我不确定。但应答中指定的字符串对我有效。是否需要删除
在我的json字符串中,还是只有开头和结尾的那一个?不。只需要删除第一个和最后一个实例。我不认为这是原因,我只是尝试了一下,我在第2行第3列得到了
预期名称,我不确定。但应答中指定的字符串对我有效。是否需要删除
在我的json字符串中,还是只有开头和结尾的那一个?不。只需要删除第一个和最后一个实例。我不认为这是原因,我只是尝试了一下,我在第2行第3列得到了
预期名称,我不确定。但答案中指定的字符串对我有效。