Javascript 在VueX中存储JSON结构

Javascript 在VueX中存储JSON结构,javascript,typescript,vuex,Javascript,Typescript,Vuex,我是Vue/VueX的新手,我正在研究一种在VueX状态下存储JSON的解决方案。起初,这似乎很简单: state { jsonthing: { ... } } 问题是:getter返回Observertype,而不是Objecttype。所以我可以这样做并检索整个JSON结构: getters: { getJSON(state) { return state.jsonthing; } } 但我无法检索JSON的一个节点或单个值,如下所示: getters: { ge

我是Vue/VueX的新手,我正在研究一种在VueX状态下存储JSON的解决方案。起初,这似乎很简单:

state {
  jsonthing: { ... }
}
问题是:getter返回
Observer
type,而不是
Object
type。所以我可以这样做并检索整个JSON结构:

getters: {
  getJSON(state) {
    return state.jsonthing;
  }
}
但我无法检索JSON的一个节点或单个值,如下所示:

getters: {
  getOneNode: state =>
    nodeName => {
      return state.jsonthing[nodeName];
    }
  }
}
getter以
观察者的身份检索
state.json
。我找不到从这个
Observer
中提取所需JSON内容并返回该内容的方法。我知道我可以使用
mapState
在我的组件中实现这一点,但这不是我想要的。有没有办法在getter中实现这一点

我目前正在做的是将JSON存储为字符串(
JSON.stringify()
),并将其转换回getter(
JSON.parse()
)。字符串作为字符串检索,而不是
观察者
。它是有效的,但它是一个黑客


在这里,我也找不到任何关于
Observer
类型的文档。如果有人能留下一个网址,我将不胜感激

好了,伙计们,你们今天不是很活跃,所以这里有一个解决方案。如果你知道更好的,请告诉我

解决方案1: 使用
JSON.stringify()
将JSON转换为字符串,并将其存储为字符串。然后getter使用
JSON.parse()
将其转换回。这是可行的,但不可否认是丑陋的

解决方案2: 生成一个返回JSON的函数。这样更好

state: {
  jsonthing: null
}
mutations: {
  INITIALIZE(state, jsonthing) {
    state.jsonthing = new Function(`return ${ JSON.stringify(jsonthing) }`)
  }
}
getters: {
  getOneNode: state =>
    nodeName => {
      return state.jsonthing()[nodeName];
    }
  }
}
我已经在媒体上写了一篇关于这个方法和一个实际应用程序(我正在实际实现)的文章