JSONParser:意外的令牌COLON(:)

时间:2014-04-26 06:08:40

标签: java json

我正在尝试使用JSONParse解析json文件并收到此错误,错误发生在以下json的开头:

位置11处的意外标记COLON(:)。

{"276716878": {
  "followers": [
    2435018580,
    1664252310,
    372262434
   ],
  "following": [
    16211434,
    945440959,
    130682467,
    264257750,
    900526363,
    318231688,
    40335029,
    64044676
   ]
}}

我还用以下内容编写了json文件:

FileWriter out = new FileWriter(JSON_FILE);
        out.write(json.toString(1));
        out.flush();
        out.close();

2 个答案:

答案 0 :(得分:1)

您传递的json字符串中可能存在某些格式错误。 Validate your json string。以下示例代码工作正常。

import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.json.JSONException;
import org.json.JSONObject;

public class Test {

    private static final Logger logger = Logger.getLogger(Test.class.getName());

    private static final String JSON_FILE = "/home/visruth/Desktop/Visruth.txt";

    public static void main(String[] args) {

        String jsonText = "{\"215876567\": { \"followers\": [ 2464054938, 772677937]}}";

        try (

        FileWriter out = new FileWriter(JSON_FILE);

        ) {

            JSONObject json = new JSONObject(jsonText);

            int indentFactor = 1;
            String prettyprintedJSON = json.toString(indentFactor);
            System.out.println(prettyprintedJSON);
            out.write(prettyprintedJSON);

        } catch (JSONException e) {
            logger.log(Level.SEVERE, e.getMessage());
        } catch (IOException e) {
            logger.severe(e.getMessage());
        }
    }
}

jsonText变量中分配您的json文本并尝试。

答案 1 :(得分:0)

我认为你是为了这个目的而引用来自不同api的类。只使用一个api。

这是一个演示代码,可以解决问题中给定的json字符串。

import java.io.FileWriter;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.junit.Assert;
import org.junit.Test;

public class TestCase { 

    private static final String JSON_FILE = "/home/visruth/Desktop/Visruth.txt";

    @Test
    public void testJSONParser() throws Exception {
        JSONParser parser = new JSONParser();

        try (

                FileWriter out = new FileWriter(JSON_FILE);

                ) {

            String jsonText = "{\"276716878\": { \"followers\": [  2435018580, 1664252310, 372262434  ], \"following\": [ 16211434, 945440959, 130682467, 264257750, 900526363,  318231688, 40335029, 64044676 ] }}";

            Object obj = parser.parse(jsonText);

            JSONObject jsonObject = (JSONObject) obj;


            JSONObject jsonObject215876567 = (JSONObject)jsonObject.get("276716878");

            JSONArray followers = (JSONArray)(jsonObject215876567.get("followers"));

            Assert.assertEquals("[2435018580,1664252310,372262434]", followers.toString());

            String jsonStringFromJsonObject = jsonObject.toString();// There is no argument as an int           

            out.write(jsonStringFromJsonObject);

        } catch (ParseException e) {
            Assert.fail(e.getMessage());
        }
    }
}