如何在vue.js中解析json?

时间:2018-02-03 03:46:36

标签: javascript json xml vue.js

我在vue.js中遇到了麻烦。

我想在服务器程序上创建具有xml数据的设置页面。

我认为,如果按照以下方式完成,那将会有效:

  1. 服务器|将xml解析为json
  2. 客户|得到json并阅读json
  3. 客户|编辑json
  4. 客户|将json推送到服务器
  5. 服务器|将json解析为xml
  6. 服务器|保存xml
  7. 但我无法阅读json,因为收到的json数据有'@'。

    "?xml": {
       "@version": "1.0",
       "@encoding": "utf-8"
    },
    "Nodes": {
      "Node": [
      {
        "@type": "development",
    
     - - - - 
    

    我无法在脚本中读取@type属性..

    // script

    <script>
    var node = new Vue({
      el: '#Nodes',
      data: {
      json: null
    },
    filters: {
      checkNum: function(value) {
      var result = value;
        if (value < 10) {
          var result = "0" + value;
        }
      return result;
      },
    }
    })
    
    $(document).ready(function(){
      console.log("ready");
      getNodes();
      setTimeInterval();
    });
    
    function getNodes() {
      var $url ="http://localhost:21004/nodes/current/get/json"
      $.ajax({
      url: $url,
      type: 'get',
      success: function (data) {
        console.log(data);
        console.log(data.Nodes[0].type);
        node.json = data;
      },
      error: function(err) {
        console.log(err);
      }
    })
    }
    
    function setTimeInterval () {
      setInterval(function() {
      getNodes();
    },3000)
    }
    
    </script>
    

    // HTML

    <ul id="Nodes">
      <li v-for="node in json.Nodes">
        {{ node.@type }}
        {{ node.@group }}
        {{ node.@name }}
      <li v-for="item in node.Items">
        {{ node.@name }}
        {{ node.@defaultValue }}
        {{ node.@expression }}
        {{ node.@format }}
      </li>
      </li>
    </ul>
    

    感谢阅读。

2 个答案:

答案 0 :(得分:0)

我对vue不满意。但是从你的代码我可以说你有对象的问题。如果值名称无效的javascript变量名称,则无法使用点表示法访问值。像这样使用它。

<ul id="Nodes">
 <li v-for="node in json.Nodes">
  {{ node['@type'] }}
  {{ node['@group'] }}
  {{ node['@name'] }}
 <li v-for="item in node.Items">
  {{ item['@name'] }}
  {{ item['@defaultValue'] }}
  {{ item.['@expression'] }}
  {{ item.['@format'] }}
 </li>
 </li>
</ul>

答案 1 :(得分:-1)

console.log(nodes.length);  This won't work because your object 
structure is like following :
"Nodes": {
"Node": [
{
  "@type": "development",

  - - - - 
where in **Nodes is an object which has a key as "Node" and this "Node" 
key is an array** so console.log(nodes.node.length) should work.