传一个json文本,获取指定的内容
临时要我写一个工具,获取文本内指定的内容
然后我看了一下文本,不是完整的json格式的,所以我这边做了一个转化,将文本转化为json格式,然后获取json文本中指定的内容,这样就简单多了
首先是pom依赖
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
</dependencies>
然后就是代码了
public class ReadJson {
//读取json文件
public static String readJsonFile(String fileName) {
String jsonStr = "";
try {
File jsonFile = new File(fileName);
FileReader fileReader = new FileReader(jsonFile);
Reader reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");
int ch = 0;
StringBuffer sb = new StringBuffer();
while ((ch = reader.read()) != -1) {
sb.append((char) ch);
}
fileReader.close();
reader.close();
jsonStr = sb.toString();
return jsonStr;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
String path = ReadJson.class.getClassLoader().getResource("file.json").getPath();
String s = readJsonFile(path);
JSONObject jobj = JSON.parseObject(s);
JSONArray movies = jobj.getJSONArray("hello");//构建JSONArray数组
for (int i = 0 ; i < movies.size();i++){
JSONObject file = (JSONObject)movies.get(i);
String key = (String)file.get("key");
String[] split = key.split(",");
Integer count = (Integer) file.get("doc_count");
String name = null;
String gender = null;
for (int j = 0; j < split.length; j++) {
name = split[1];
gender = split[2];
}
System.out.println(name+","+gender+","+count);
}
}
}
文档的内容大致是这样的
{
"hello": [{
"key": "3ee9f184b9da11eaa7e45254c471,赵楚楚,1",
"doc_count": 505
},
{
"key": "3b7f0908f9ae11e694bbe41f,黄森,1",
"doc_count": 454
},
{
"key": "fcf3001a9e4011e9976b90e2ba5798a0,胡书兴,1",
"doc_count": 325
},
{
"key": "3bacb883f9ae11e694bbe41f,史双春,1",
"doc_count": 321
}
]}
这是一个小的工具