【问题标题】:how can i fetch a json file that has multiple objects我如何获取具有多个对象的 json 文件
【发布时间】:2020-12-18 10:24:59
【问题描述】:

我可以获取json文件内容并显示对象内容,但是当json文件中包含超过1个对象时,我无法显示json内容。

这是我只有一个对象时的样子:

当我在 database.json 上有超过 1 个对象时它的外观

如果你有解决方案,这里是我的客户端 js 代码

  
    
    var jsonn = '/database.json';

    async function userinfo() {
        
        const response = await fetch(jsonn);
        const data = await response.json();
        var { username, password, _id } = data;
        document.getElementById('user').textContent = username;
        JSON.stringify(jsonn);
        console.log(data);
        console.table (data);
        console.log (username);
        console.log (_id);
    }
    
    userinfo();
    

这是我的 server.js

var express = require("express");
var app = require("express")();
var http = require("http").Server(app);
var io = require("socket.io")(http);
var port = process.env.PORT || 3000;
var router = require("express");
var fs = require("fs");
var DatasStore = require("nedb");
//test
var batteryLevel = require('battery-level');
var externalip = require('externalip');
//database test 
var Database = new DatasStore('database.json');
Database.loadDatabase();
//Database.insert({ "name" : "Rahim", "status" : "Online"});
//Database.insert({ "name" : "Rasko", "status" : "Offline"});
app.post('/new', function (req, res) {
    new user({
        "name": "username"
        , "password": "password"
        , "class": "classes"
        , "gender": "gender"
    });
    var usr = (user);
    Database.insert(usr);
});
//Accessebale Files//
app.use(express.static("public/chat.html/"));
//console.log(Database);
app.use('/icon', express.static(__dirname + '/public/icon.png'));
app.use('/home', express.static(__dirname + '/public/home.html'));
app.use('/chat', express.static(__dirname + '/public/chat.html'));
app.use('/login', express.static(__dirname + '/public/login.html'));
app.use('/hometest', express.static(__dirname + '/public/hometest1.html'));
app.use('/index.js', express.static(__dirname + '/public/index.js'));
app.use('/database.json', express.static(__dirname + '/public/database.json'));
app.use(express.static(__dirname + "/login.html"));
console.log(__dirname);
app.get("/", function (req, res) {
    res.sendFile(__dirname + "/public/login.html");
    console.log("users ip ↓");
    console.log(req.ip);
    Database.insert("{" + "Users-ip:" + req.ip);
});
io.on("connection", function (socket) {
    socket.on("chat message", function (msg) {
        io.emit("chat message", msg);
    });
});
http.listen(port, function () {
    console.log("|---------------------------------------------------|");
    console.log("|----------------------SERVER-----------------------|");
    console.log("|---------------------------------------------------|");
    console.log("");
    console.log("The Server is Live on PORT : " + port);
    console.log("           ")
    console.log("");
});
io.on("connection", socket => {
    console.log("a user connected");
    console.log("------------------------------");
    socket.on("disconnect", () => {
        console.log("user disconnected");
        console.log("----------------------------");
    });
});
io.on("connection", socket => {
    socket.on("chat message", msg => {
        console.log("Sent: " + msg);
        Database.insert((msg));
    });
});
//testing code
//BatteryLevelLogger//
batteryLevel().then(level => {
    console.log(level);
    Database.insert(level);
});
///ServerStatus Logger
const https = require('http');
var options = {
    host: '192.168.1.102'
    , port: 3000
    , path: '__dirname'
};
https.get(options, function (res) {
    console.log("status: " + res.statusCode);
}).on('error', function (e) {
    console.log("error: " + e.message);
});
Database.insert(batteryLevel);
//26august test//
//app.post('/', (request, response) => {
//  console.log("requestse");
//    app.post();
//});
///LOGIN TEST///
//var dataa = fs.readFileSync("database.json");
//var info = JSON.parse(dataa);
//Database.loadDatabase();
//fs.writeFile("database.json" , info);
//console.log(info);///
////Login///
const Datastore = require('nedb');
app.listen(2000, () => console.log('listening at 3000'));
app.use(express.static('/public'));
app.use(express.json({
    limit: '1mb'
}));
const database = new Datastore('public/public/database.json');
database.loadDatabase();

app.post('/public', (request, response) => {
    const data = request.body;
    const timestamp = Date.now();
    data.timestamp = timestamp;
    database.insert(data);
    response.json(data);
    console.log(data);
    var logdate = new Date;
    console.log(logdate);
});

我真的不想编辑 server.js,因为每个想法都在服务器中工作,我猜是客户端代码应该读取 json 文件“database.json”上的多个对象 再次,如果您有答案,请考虑与我分享。

这里是“带有 2 个对象”的 json 文件:

{"username":"eaz","password":"","email":"eza","timestamp":1598667968928,"_id":"BSA8MsS2dU299vcT"}
{"username":"user","password":"random","email":"emailandom","timestamp":1598667968928,"_id":"BSA8MsS2dU299vcT"}

【问题讨论】:

  • 您可以分享解析时出现错误的 JSON 吗?
  • database.json 的内容必须是对象数组:[ { ... }, { ... }, ... ]
  • 我尝试添加 [{content}] 但没有成功
  • 当前database.json 文件不包含有效的JSON。
  • 是什么造成了差异

标签: javascript html node.js json


【解决方案1】:

一个 JSON 文件只能有 1 个主要对象。 如果你这样写,你可以让它工作:

[
    {"username":"eaz","password":"","email":"eza","timestamp":1598667968928,"_id":"BSA8MsS2dU299vcT"},
    {"username":"user","password":"random","email":"emailandom","timestamp":1598667968928,"_id":"BSA8MsS2dU299vcT"}
]

另外,JSON 文件中的所有元素都必须用逗号分隔。

【讨论】:

  • 但是如何显示第二个对象的内容?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-18
  • 1970-01-01
相关资源
最近更新 更多