将json的部分(当前作为字符串)分配给JavaScript中的变量

时间:2018-05-31 19:54:25

标签: javascript html json python-3.x

我已经在这个问题上停留了很长一段时间了,真的无法找到解决方案......

作为一个背景 - 我使用名为“eel'”的库将python脚本与Web GUI连接起来。

Python脚本使用json.dump生成.txt文件,如下所示:

{
    "TEST": {"name": "TESTING", "email": "1", "telephone": "2"},
    "Nik": {"name": "test", "email": "1", "telephone": "2"}
}

我正在尝试在python中读取json文件,将数据分配给变量:

with open('profile1.txt') as f:
  data = json.load(f)
  eel.my_javascript_function(data)

然后在JavaScript端收到它:

eel.expose(my_javascript_function);
function my_javascript_function(a) {
  var obj = JSON.stringify(a);
  document.getElementById("demo").innerHTML = obj;

现在,obj返回整个字符串,如下所示:

{
    "TEST": {"name": "TESTING", "email": "1", "telephone": "2"},
    "Nik": {"name": "test", "email": "1", "telephone": "2"}
}

我遇到的问题是 - 如何为此字符串中的变量分配特定的信息位?

例如,如果我想制作var a = TEST或Nik,是否可以调用更高级别的json?

另外,如何在特定类别中调用某些内容,即json [TEST] [name] - 沿着这些行?

2 个答案:

答案 0 :(得分:0)

我想你想在JavaScript方面研究JSON.parse()方法......

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

它将允许您传递嵌套的JSON结构,就像json.dump在您的示例中提供的那样,然后使用标准JavaScript对象操作在其中导航以获取嵌套值或结构。



var foo = '{"TEST": {"name": "TESTING", "email": "1", "telephone": "2"},"Nik": {"name": "test", "email": "1", "telephone": "2"}}';

var fooObject = JSON.parse( foo );

console.log( fooObject );
console.log( fooObject["Nik"] );
console.log( fooObject["Nik"]["email"] );

document.getElementById("myDiv").innerHTML = fooObject["TEST"]["name"];

<div id=myDiv></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

  

JSON在1

时出现了意想不到的特征

这背后的原因是您正在尝试parse JSON对象。

var obj = {
    "TEST": {"name": "TESTING", "email": "1", "telephone": "2"},
    "Nik": {"name": "test", "email": "1", "telephone": "2"}
}

console.log(JSON.parse(obj));

因此,OP中的obj返回JSON object而不是JSON string。无需再次解析它。

工作演示

var obj = {
    "TEST": {"name": "TESTING", "email": "1", "telephone": "2"},
    "Nik": {"name": "test", "email": "1", "telephone": "2"}
}

var test = obj.TEST;
var nik = obj.Nik;
console.log("test", test);
console.log("nik", nik);