Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在特定位置读取JSON_Javascript_Json - Fatal编程技术网

Javascript 如何在特定位置读取JSON

Javascript 如何在特定位置读取JSON,javascript,json,Javascript,Json,我有一个json文件 "user1": { "body-parser": "^1.12.2", "creditcard-generator": "*" } "user2": { "body-parser": "^1.12.2", "creditcard-generator": "*" } 我正在尝试从特定位置读取此文件。到目前为止,我还不知道如何做到这一点。比如说,我只想为user2选择用户凭据。如何在javascript中实现这一点?任何建议都会有很大帮助。您的json文件

我有一个json文件

"user1": {
    "body-parser": "^1.12.2",
    "creditcard-generator": "*"
}

"user2": {
"body-parser": "^1.12.2",
"creditcard-generator": "*"
}

我正在尝试从特定位置读取此文件。到目前为止,我还不知道如何做到这一点。比如说,我只想为user2选择用户凭据。如何在javascript中实现这一点?任何建议都会有很大帮助。

您的json文件无效

 var text =    {

    "user1": {
        "body-parser": "^1.12.2",
        "creditcard-generator": "*"
    },

    "user2": {
    "body-parser": "^1.12.2",
    "creditcard-generator": "*"
    }
    }
你可以这样解析

var JSON={"user1": {
    "body-parser": "^1.12.2",
    "creditcard-generator": "*"
},

"user2": {
"body-parser": "^1.12.2",
"creditcard-generator": "*"
}}
console.log(text.user2)

补充fljs提供的答案

第一件事:您的json格式无效。您应该将其放入数组中,并使用逗号分隔对象

  var model = {  
    "user1": {
        "body-parser": "^1.12.2",
        "creditcard-generator": "*"
           },

    "user2": {
    "body-parser": "^1.12.2",
    "creditcard-generator": "*"
            }
     }
现在您要阅读该信息:

> model["user2"]["creditcard-generator"]
< "*"
>型号[“用户2”][“信用卡生成器”]
< "*"

这很简单。 假设您将文件放入这样一个变量中

var JSON={"user1": {
    "body-parser": "^1.12.2",
    "creditcard-generator": "*"
},

"user2": {
"body-parser": "^1.12.2",
"creditcard-generator": "*"
}}
在Javascript中,使用点运算符来引用特定元素及其子元素

比如说,我只想为user2选择用户凭据

在Javascript中,您只需编写
JSON.user2
等等。
尝试此操作的最快方法是在控制台中复制并粘贴var JSON部分。点击
JSON.user2

您的JSON对象通常如下所示(注意开头和结尾的{}):

现在您可以通过
json.user2
获得user2的值

还有其他方法可以获取数据并回答问题:您有JSON对象还是JSON数组?你已经分析过了吗

看看这篇文章:


您好,Nico

如果您想要一个spesific节点,请按如下方式访问它:

 jsonObj["user2"].body-parser;
如果您需要更通用的功能,可以使用此功能:

var x = data.key1.children.key4;

var path = "data";
function search(path, obj, target) {
    for (var k in obj) {
        if (obj.hasOwnProperty(k))
            if (obj[k] === target)
                return path + "['" + k + "']"
            else if (typeof obj[k] === "object") {
                var result = search(path + "['" + k + "']", obj[k], target);
                if (result)
                    return result;
            }
    }
    return false;
}
//Then for evry node that you need you can call the search() function.
var path = search(path, data, x);
console.log(path); //data['key1']['children']['key4']

请注意,首先必须修复JSON以使其成为有效的结构。

好的,那么现在我该如何阅读它,比如获取user2的主体解析器和信用卡生成器值?我尝试了var fs=require('fs');var content=fs.readFileSync('./actions/writeTo.json');var jsonContent=JSON.parse(内容);log(json.user1);它不起作用。这是来自json文件失败的错误:意外令牌v语法错误:意外令牌vMy json文件是:var json={“user1”:{“body parser”:“^1.12.2”,“creditcard generator”:“}”,user2:{“body parser”:“^1.12.2”,“creditcard generator”:“}}您在控制台中写错了。编写console.log(jsonContent.user1)而不是console.log(json.user1)json.parse()用于将包含json符号的字符串转换为Javascript对象。您的代码(通过调用.toString())将对象转换为字符串,以便尝试将其解析为JSON文本。默认的.toString()返回“[object]”,它不是有效的JSON;因此出现了错误。它不是一个JSON文件。2.显示您尝试了什么以及在什么环境(节点、浏览器等)中尝试了什么。明白了,我对json非常陌生。你能告诉我如何访问这个文件吗。所以就像在javascript中一样,我通常使用var fs=require('fs');var文件='./actions/writeTo.json';然后写入jsonfile.writeFile(file,obj,function(error){…}类似地,我如何在这里获取json文件?@BishwaroopChakraborty:如果您的服务器上通常有一个json文件,那么您可以通过http请求获取它,也可以通过JQuery:
$.get(“/Actions/writeTo.json”,function(data){})
如果你有需要解析的数据,那么你就有了可以访问的json/js对象。