从存储在localStorage中的字符串化对象返回一个字段

时间:2017-07-29 14:56:26

标签: javascript json

我有这样的JSON文件:

{"companies":
    [{"name":"LCBO", "City":"Mississauga", "Province":"Ontario",
    "Website":"http://www.lcbo.com/content/lcbo/en.html#.WXtQ94jytPY", 
    "PhoneNumber":"1(800)668-5226", 
    "Longitude":"-79.381735", "Latitude":"43.648607"}]}

这是我的JavaScript,用于在单击按钮时将JSON文件存储在本地存储中:

$(document).ready(function() {  
    $('#btn1').click(function() {
        $.ajax({
            url:'company.json',
            dataType:'json',
            success: function(data) {
                var u = data.companies[1];
                $(u).each(function() {
                    $('#result1').append("<p>"+ "Company name: "+this.name + "<p>" +
                                        "<p>"+ "City: " +this.City + "<p>" +
                                        "<p>"+ "Province: "+this.Province + "<p>" +
                                        "<p>"+ "Website: " +this.Website + "<p>" +
                                        "<p>"+"Phone Number: "+this.PhoneNumber + "<p>" +
                                        "<p>"+"Longitude: "+this.Longitude + "<p>" +
                                        "<p>"+"Latitude: "+this.Latitude + "<p>");
                    saveData(u);
                });     
            }
        });

     function saveData(data) {
        var obj = {"Value":data};
        if (window.localStorage) {
            alert("Local Storage is supported");
            localStorage.setItem("Information", JSON.stringify(obj));
        } else {
            alert("Local Storage is not supported");
        }
    }
});

问题是我如何获得价值&#34;经度&#34;和&#34;纬度&#34;来自当地的仓库。

2 个答案:

答案 0 :(得分:0)

&#13;
&#13;
var info = JSON.parse(localStorage.getItem('Information'));
&#13;
&#13;
&#13; 通过这种方式,您可以将对象存储在localStorage中作为JSON对象,您可以迭代以获取所需的值

答案 1 :(得分:0)

你需要从localStorage获取“信息”,它将是一个JSON字符串,将其解析回javascrpt对象,查看为公司数组创建的“Value”属性,并获取包含一个公司的数组元素data(第0个是从ajax返回的第一个公司),然后提取Latitude(或Longiture)属性。

JSON.parse(window.localStorage.get("Information")).Value.companies[0].Latitude

如果这看起来过于复杂,您可以分步进行:

var info = window.localStorage.get("Information");
var obj = JSON.parse(info);
var companies = obj.Value.companies;
var myCompany = companies[0];
var lat = myCompany.Latitute;

此外,也许在ajax获取后简化数据而不是将其嵌入到另一个对象中。此外,当前结构将仅缓存最后检索的ajax查询。要在localStorage中存储多个查询,需要为每个公司提供密钥,或者拔出旧对象,更新它,然后将其放回localStorage。在本地存储的内容存在限制。