java - 尝试在 Java 中将 JSON 解析为 String

标签 java json parsing

我正在尝试解析此股票信息:

http://www.google.com/finance/info?client=ig&q=csco

这是 map 的 JSON 格式,基本上是按照我看到的使用 quick-json jar 的本教程进行的,但它一直给我一个异常,我不明白为什么。这是代码,非常感谢任何帮助

教程链接:https://code.google.com/p/quick-json/

public static void main(String args[]) throws IOException
{
    String value="";
    URL uri = new URL("http://www.google.com/finance/info?client=ig&q=csco");
    BufferedReader input = new BufferedReader(new InputStreamReader(uri.openStream(), "UTF-8"));
    while(input.readLine()!=null)
    {
        value+=input.readLine();
    }
    JsonParserFactory factory = JsonParserFactory.getInstance();
    JSONParser parse = factory.newJsonParser();
    Map jsonData =parse.parseJson(value);
    System.out.println((String)jsonData.get("e"));
}

这是我得到的异常:

Exception in thread "main" com.json.exceptions.JSONParsingException: @Key-Heirarchy::root[0]/   @Key::  COMMA or ] is expected. but found :...@Position::5
    at com.json.utils.JSONUtility.handleFailure(JSONUtility.java:124)
    at com.json.parsers.JSONParser.stringLiteralTemplate(JSONParser.java:574)
    at com.json.parsers.JSONParser.nonValidatingValueTemplate(JSONParser.java:698)
    at com.json.parsers.JSONParser.jsonArrayTemplate(JSONParser.java:454)
    at com.json.parsers.JSONParser.parseJson(JSONParser.java:170)
    at parser.Scratch.main(Scratch.java:27)

编辑:我也试过 Map jsonData =parse.parseJson(value.substring(3) 从 [ 但它仍然给我一个错误

最佳答案

除了删除前导的 // 之外,还要修复你的循环。变化

while(input.readLine()!=null) // skipping odd lines
{
    value+=input.readLine(); // reading even lines
}

String line = null;
while((line = input.readLine()) !=null)
{
    value +=line;
}

或者,更好地使用 StringBuilder,例如

String line = null;
StringBuilder json = new StringBuilder();
while((line = input.readLine()) !=null)
{
    json.append(line);
}
value = json.substring(3); // removes the leading "// "

编辑:
我不熟悉您的 JSON 解析器。随着org.json. Java 解析器,您可以这样做。

JSONArray jsonRoot = new JSONArray(value);
JSONObject quote = jsonRoot.get(0);
System.out.println ("e = " + quote.getString("e"));

但是,作为一种解决方法,您可以将 []StringBuilder 中剥离为

// removes the leading "// [" and trailing "]"
value = json.substring(4, json.length() - 1);

关于java - 尝试在 Java 中将 JSON 解析为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17308498/

相关文章:

ios - swift 3 将 json 数组解析为键值

php xpath问题

javascript - 解析多级 JSON 时遇到问题

java - 尝试使用 objectdraw 运行 java 程序时出现线程 "main"错误异常

java - org.junit.Assert 本身的 JUnit NoClassDefFoundError

javascript - 从菜单中下拉空选择

javascript - 在 JavaScript 中使用数组代替对象

java - android - 倒计时器没有取消

java - 更有效地创建新数组或重置数组

json - Firefox尝试从Grails下载JSON