Javascript JSON解析返回空字符串?
我不确定这是否与VueJS或JS本身有关 我的数据库中有字符串(使用JSON.stringify()转换的JS对象),如下所示:Javascript JSON解析返回空字符串?,javascript,json,vue.js,Javascript,Json,Vue.js,我不确定这是否与VueJS或JS本身有关 我的数据库中有字符串(使用JSON.stringify()转换的JS对象),如下所示: {“type”:5,“value”:{“7”:“/data/images/structured content/64-7-scico.jpg”,“8”:“wefwe”,“9”:“Nějakýtext”,“10”:“/data/images/structured content/64-10-scico.jpg”} 我想做的是从数据库中选择它(通过Axios),将其转换回
{“type”:5,“value”:{“7”:“/data/images/structured content/64-7-scico.jpg”,“8”:“wefwe”,“9”:“Nějakýtext”,“10”:“/data/images/structured content/64-10-scico.jpg”}
我想做的是从数据库中选择它(通过Axios),将其转换回JS对象并将其设置为VueJS数据:
.then(response => {
if (response.data.response === "ok" && response.status == 200) {
// get data
let data = response.data.data.data[0];
// pass name to state
this.objectName = data.name;
// get json in string format
let result = data.content;
// first log
console.log(result);
// convert string to json
let content = JSON.parse( result );
// second log
console.log( content.values );
// update states
this.IDType = content.type;
this.values = content.values;
}
})
Axios、数据.name和内容.type工作正常,但是第二个日志(内容.values)似乎返回了带有空字符串的observer,我无法将其传递给Vue数据并使用它,正如您在下面的屏幕上看到的,无论我做什么,此对象中的值都是空的。
这里到底出了什么问题?谢谢大家!
从调试器:
要成为反应式Vue,需要在分配对象的键之前知道它们是什么。因此,如果已知,请预先分配:
data : () => ({
values : {
7 : "",
8 : "",
9 : "",
10 : ""
}
}),
然后使用“对象指定”来设置它们:
Object.assign(this.values, content.values)
如果键是未知/动态值,则可以使用$set
方法将其设置为被动:
Object.keys(content.values).forEach(
function(key){
this.$set(this.value, key, content.values[key])
}
)
记录一个特定的成员,而不是整个对象。这是可行的,但我需要将整个对象添加到我的Vue数据中,这就是问题所在,我试图像这样欺骗它:
object.entries(content.values).forEach(([key,val])=>{this.values[key]=val;});console.log(this.values)代码>但没有成功值很好,您只是想过早地使用它们。将鼠标悬停在控制台消息上的蓝色“i”图标上…@Teemu这当然是可能的,我只是不知道该怎么做,怎么可能?我一直在尝试处理axios在解析后返回的数据,数据显然已经存在,为什么我要过早地使用它们呢?那么我该怎么办呢?如果预览(红色文本)中存在这些值,但下拉列表中不存在这些值,则表示它们在最初创建console.log时存在,但随后丢失。您可以尝试添加调试器
紧接着console.log(content.values)
?这对我来说不起作用,无论我如何尝试应用您的解决方案,总是以观察者的形式将我的数据获取到“This.values”,但这并没有真正起作用