获取Java中某个单词之后的单词

时间:2018-07-11 15:08:09

标签: java json file file-io

我有一个具有以下结构的信息文件:

  

{"captcha_set": "accounts.snapchat.com_2015-03-09_17-13-24", "correct_answer": [5, 8], "desc": {"keyword": "beer", "text": "Select all beer below. A sample image is on the right."}}

我试图将此信息文件转换为JSON对象以获取"keyword"的值,但是由于我打印JSON对象时其中没有内容,因此它没有转换。

我为此编写的代码如下:

import org.json.JSONArray;
import org.json.JSONObject;

public static void walk(String path) throws FileNotFoundException, IOException {
    File[] list = new File(path).listFiles();
    if (list == null) return;
    for (File f : list) {
        if ( f.getName().equals("info.txt")) {

            BufferedReader br = new BufferedReader(new FileReader(f));
            StringBuilder sb = new StringBuilder();
            String line = br.readLine();
            while (line != null) {
                sb.append(line);
                sb.append("\n");
                line = br.readLine();
            }
            System.out.println(sb.toString()); 

            JSONObject jsonObj = new JSONObject(sb);
            System.out.println(jsonObj+"\n");
        } else {
            walk(f.getAbsolutePath());
        }
    }
}

结果是一个空的大括号{}

所以我不确定要获取“关键字”值的其他选项,如何读取每个信息文件中“关键字”之后的单词?

1 个答案:

答案 0 :(得分:1)

您必须将String传递给构造函数:

new JSONObject(sb.toString())

调用public JSONObject(String source)构造函数,根据其javadoc将:

  

从源JSON文本字符串构造JSONObject

这就是你想要的。

您编码:

new JSONObject(sb)

但是将非字符串对象传递给构造函数将调用public JSONObject(Object bean)构造函数,根据javadoc它将构造:

  

使用bean吸气剂从Object构造一个JSONObject。

StringBuilder没有吸气剂,所以您有一个空对象。