簡體   English   中英

如何在本地機器上離線讀寫JSON?

[英]How to read and write JSON offline on local machine?

問題

我需要一種方法來在完全脫機 (,) web 應用程序中存儲和收集 JSON 數據。 托管在本地(共享)計算機上。 有幾個人會訪問該應用程序,但它永遠不會真正在線。

我希望該應用程序能夠:

  • 以編程方式連續讀取和寫入 JSON 數據(即不使用文件上傳類型模式)
  • 最好不需要安裝除瀏覽器以外的任何軟件,特別是我不想使用本地服務器。 編輯:如果有幫助,我可能願意學習一些 Python)
  • 我需要存儲的數據量很小,所以使用某種數據庫實在是太過分了。

解決方案?

我的第一個想法是讓 html5 文件 API,只需讀取/解析並將我的 JSON object 寫入本地 txt 文件,但這似乎不可能?!

本地存儲在這里不適用,當幾個人 - 每個人都有自己的瀏覽器 - 需要訪問 html 時?

有任何想法嗎?

筆記

我知道這個話題並不完全新穎,但我認為我的情況可能與其他話題略有不同。 在過去的幾個小時里,我花了大部分時間在谷歌上搜索這個,但我一點也不聰明……

你考慮過 Python 的 Json 模塊嗎? http://docs.python.org/2/library/json.html

使用它,您可以將 python 對象與 json 字符串相互轉換。 您可以根據需要存儲字符串

您不能使用 Localstorage 來啟用此類功能,因為每個客戶端都將存儲自己的數據集。

你有沒有考慮過使用java小程序來處理這些信息?

您可以啟動一個 Java 小程序,將其用作瀏覽器客戶端之間的橋梁和信息存儲。 瀏覽器可以使用 websockets 共享這些信息。

前段時間我用這樣的解決方案構建了演示。 檢查它: https : //github.com/KingRial/SBrower在這個演示中,我打開一個瀏覽器/選項卡,它啟動一個 java Applet 來創建一個 websocket 服務器。 所有瀏覽器/選項卡都只是連接到 websocket 服務器並共享信息的客戶端。

由於python是問題標簽之一,我給出了一個python解決方案:

import json

#reading
file_json = open("json.txt")
print file_json
python_json_object = json.loads(file_json)
print python_json_object
file_json.close()


#writing
file_json = open("json.txt", 'w')
file_json.write(json.dumps(python_json_object))

我的建議類似於 WampServer(Windows、Apache、MySQL、PHP)。 我看過一些關於將 Python 添加到該組合的教程。

您將有權將 JSON 數據讀取和寫入本地存儲或將數據放置在本地數據庫中。

我知道你說過你不想選擇本地服務器,但nodejs可能是解決方案。 如果您了解 JavaScript,那么設置一台服務器並讓每個人都可以從任何瀏覽器訪問該服務器非常簡單。 由於它完全是 JavaScript,因此您甚至不會遇到 JSON 格式的轉換問題。

為了存儲 JSON,您可以使用 nodejs 的 FileSystem 內置庫,它允許您從文件中讀取和寫入,因此您甚至不需要數據庫。

這是使用 Node.js 和 Express。

const express = require('express');
const http = require("http");
const app = express();
const server = http.createServer(app);
const fs  = require('fs');
const newestData = {
    "id":123,
    "title":"spoon" 
 }
app.get("/",async(req,res,next)=> {
    res.status(200).send('Hello World!');
    fs.readFile("Metadata.json", 'utf8', (err,content)=>{
        if(err) throw err
        let data = JSON.parse(content)
    
        data.push(newestData)
        fs.writeFile("Metadata.json",JSON.stringify(data), (err)=>{
            if(err) throw err
        })
         
    })

 })

const port = process.env.PORT || 5000;
require("dotenv").config();
server.listen(port, function() {
console.log('Express server listening on port ' + port);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM