【问题标题】:How to access JSON data that has assignment in the data如何访问在数据中有赋值的 JSON 数据
【发布时间】:2017-12-05 16:58:15
【问题描述】:

我正在使用 react、webpack 和 express。访问数据时遇到问题。我尝试了 axios 这有点工作但不是真的因为它不是有效的 json 所以我最终只是得到了整个块而不是没用的。我不能改变json。有任何想法吗?我必须使用的 JSON 如下所示:

window.__something__ = {  
    "stuff1": {  
        "thing1": "value1",  
        "thing2": "value2"  
    },  
    "stuff2": {  
        "thing3": "value3",  
        "thing4": "thing4"  
    }  
};

【问题讨论】:

  • 这不是有效的 JSON。您可以删除“window.something”部分和JSON.parse()它;你想达到什么目的?
  • 不幸的是,正如我所说,我无法修改文件并且必须使用我所提供的内容。我只是想以某种方式访问​​数据。
  • 所以你有这个字符串?您不必更改它,您可以创建一个本地副本(例如,将文件的内容分配给一个变量)并进行更改。
  • 您在上面看到的是 .json 文件中的内容。我尝试使用 axios.get(the.json) 并分配给一个变量。我得到的只是整个 .json 文件作为分配给所述变量的字符串。只是一大段没有用。我在想是否有办法获取数据但只需删除“window.something =”部分就完美了
  • 显然您需要以某种方式parse 数据,这就是为什么我说它不是有效的 JSON。获得该字符串后,删除所有内容非常简单,包括开头的 = 和结尾的 ;

标签: javascript json reactjs express webpack


【解决方案1】:

如果您可以将数据作为字符串获取,只需删除您不想解析的部分,其余部分为 JSON。假设它总是有一个 = 并以 ; 结尾,这样的事情会起作用:

var str = `window.__something__ = {  
        "stuff1": {  
            "thing1": "value1",  
            "thing2": "value2"  
        },  
        "stuff2": {  
            "thing3": "value3",  
            "thing4": "thing4"  
        }  
    };`

    var cleaned = str.substring(str.lastIndexOf("=")+1,str.lastIndexOf(";"));
    var json_out = JSON.parse(cleaned)

【讨论】:

    猜你喜欢
    • 2020-10-18
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多