【问题标题】:How to store JSON data from a file into an array of strings如何将文件中的 JSON 数据存储到字符串数组中
【发布时间】:2013-11-01 03:11:38
【问题描述】:

我正在使用 Eclipse 中的动态 Web 项目并使用 HTML 5 和 Javascript。 通过以下代码,我可以设法解析本地保存在系统中的 JSON 文件:

$.getJSON( "/Users/Documents/workspace2/sample.json", function( data ) {
    var items = [];
    $.each( data, function( key, val ) {
        items.push( "<li id='" + key + "'>" + val + "</li>" );
    });
    $( "<ul/>", {
        "class": "my-new-list",
        html: items.join( "" )
    }).appendTo( "body" );
});

假设这是 JSON 文件:

{"resource":"A","literals":["B","C","D"]}

我的问题是:有没有可能有一个字符串数组来存储解析后 JSON 文件中的这些元素。例如,我对 jQuery 很陌生,无法真正看到这些元素存储在字符串数组中。谁能帮我解决这个问题。

【问题讨论】:

  • 我不清楚你想做什么。你能告诉我们你的代码的期望结果应该是什么吗?
  • 好吧。我正在使用 Arobr javascript 进行可视化。在某些时候,我应该显示用字符串标记的节点。我想从 JSON 文件“A”、“B”、“C”和“D”中获取,将它们存储在一个字符串数组中,并将它们用于 Arbor Javascript,以使它们在节点中可视化。解析后,如何读取或存储“A”、“B”、“C”和“D”作为字符串以供以后使用。
  • 您可以将data(此时是一个对象)保存到一个范围在getJSON 调用之外的变量中,但要意识到getJson 是一个异步操作。因此,当它运行时,其他东西将继续运行,直到它完成然后这将运行回调(您在调用中定义的 anon 函数),因此您在 getJson 回调中设置的任何变量可能在您需要时不可用.
  • 我会避免在模型中存储演示细节(即 HTML),因为实际上你应该分离关注点,即呈现视图、数据(即 JSON ) 应该与视图/演示文稿无关,即不了解演示文稿的细节。
  • 我定义了一个超出 getJson 范围的数组并添加了以下行: {outer.push("
  • " + val + "");之后,我添加了以下行以查看数组的第一个元素: {var node = sys.addNode('The First Element',{'color':'red','shape':'dot','label' :outer.get(0)});} 不幸的是,我无法获取字符串的第一个元素,但是它是在 getJson 范围之外定义的。有什么想法吗?

标签: javascript jquery html ajax json


【解决方案1】:

试试这个方法:

jsonFile.json

{
    "resource":"A",
    "literals":["B","C","D"]
}

myFile.html

<html>
<head>
        <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
        <script type="text/javascript">
            $.getJSON( "jsonFile.json", function( data ) {
                var items = [];
                $.each( data, function( key, val1 ) {
                    items.push( "<li><a href=#'" + key + "'>" + val1 +"</a></li>");     
                });
            });
                $( "<ul/>", {
                "class": "my-new-list",
                 html: items.join( "" )
                }).appendTo( "body" );
            });
        </script>

</head>
<body>
    //result will be displayed here 
</body>
</html>

输出:

【讨论】:

  • 感谢您提供此代码。我快到了。我还有一个问题。当我运行您的代码时,它给了我一个带有“未定义”的长列表。请问有什么想法吗?非常感谢您的支持。
  • 您的代码正在运行,但它向我显示了未定义项目的列表。一旦我分别用键 val1 替换 this.command 和 this.name,我就会迭代地得到预期的结果。 this.command 和 this.name 是什么?你能帮我解决这个问题吗?
  • this.command返回command key的值,this.name返回我提供的json文件的name key的值。
  • 我照原样复制并粘贴了您的代码。不幸的是,到目前为止我看不到任何结果。我想知道为什么!。
  • 我完全相信你的答案是正确的。我想我有一个问题,我看不到结果。我右键单击该文件并选择打开方式-> Web 浏览器。我不明白为什么它不起作用。我照原样复制并粘贴了您的代码,但其中没有任何内容。
【解决方案2】:
var abc = JSON.stringify({"resource":"A","literals":["B","C","D"]});

var ab = JSON.parse(abc);

var arr=$.map(ab, function(value, index) {
   return [value];
});

希望对你有帮助。

【讨论】:

  • 我在本地系统中保存了 json 文件。我无法将该文件的内容复制到变量 abc 中。是否有任何解决方案可以读取 Json 文件,将数据转换为字符串并以 html 显示。谢谢
猜你喜欢
相关资源
最近更新 更多
热门标签