如何使用 java 监听 JSON 文件更新

Posted

技术标签:

【中文标题】如何使用 java 监听 JSON 文件更新【英文标题】:How to listen to JSON file update using java 【发布时间】:2017-05-27 04:08:00 【问题描述】:

我创建了从 url 加载 JSON 文件的 java 程序,我每 20 秒将 json 对象推送到这个 url 我希望程序在此处更新的 JSON 文件是我的 java 代码时发出通知

package com.company;

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

import java.io.*;
import java.net.URL;
import java.nio.charset.Charset;

public class Main 
    private static String readAll(Reader rd) throws IOException 
    StringBuilder sb = new StringBuilder();
    int cp;
    while ((cp = rd.read()) != -1) 
        sb.append((char) cp);
    
    return sb.toString();


public static JSONArray readJsonFromUrl(String url) throws IOException, JSONException 
    InputStream is = new URL(url).openStream();
    try 
        BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
        String jsonText = readAll(rd);
        JSONArray jsonArray = new JSONArray(jsonText);
        return jsonArray;
     finally 
        is.close();
    


public static void main(String[] args) throws IOException, JSONException 
    JSONArray json = readJsonFromUrl("http://frozen-***-16337.herokuapp.com/history.json");
    for(int i=0;i<json.length();i++)
        JSONObject jo=json.getJSONObject(i);
        System.out.println(jo.get("data"));
     

 


如何让java程序监听JSON文件更新?

【问题讨论】:

你有什么问题? 我已经更新了问题 我没有看到您的代码更改了任何文件?您的代码只是读取数据并打印出来 是的,JSON文件是使用nodejs而不是java更新的,所以java程序只需要在JSON文件更新时发出通知 【参考方案1】:

您需要创建一个调度程序,每 20 秒执行一次您的代码。有多种方法可以实现这一目标。

一个好的健壮方法是使用类似Quartz Scheduler 或者,您也可以创建一个 Thread 并让其 run() 方法循环执行代码。

public class MyPush implements Runnable 

    public void run() 
         long twentySeconds = 20*1000L;
        while(true) 
          //execute your code
           Thread.sleep(twentySeconds);
        
    

    public static void main(String args[]) 
        (new Thread(new MyPush())).start();
    


【讨论】:

以上是关于如何使用 java 监听 JSON 文件更新的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 pySpark 使多个 json 处理更快?

如何使用 PowerShell 更新 JSON 文件

如何使用 Java SprinBoot CrudRepository 在 MySQL 中为 JSON 列插入/更新一行

Java Apache Beam PCollections 以及如何使它们工作?

如何使用 Python 更新 JSON 文件?

如何使 PhpStorm 在 .vue 文件中反映 TypeScript tsconfig.json?