json - Json字符串数组到Vuex中的对象
问题描述
在我的州,我有categories
。在categories
数组中,每个类别都有一个settings
我保存 json 数组字符串的列。我的问题是,如何通过过滤响应将我的字符串变成对象?我的回复:
[{"id":4,"name":"Vehicles","slug":"vehicles","settings":"[{"edit":true,"searchable":true}]","created_at":"2019-01-26 16:37:36","updated_at":"2019-01-26 16:37:36"},
这是我对类别的加载操作:
const loadCategories = async ({ commit }, payload) => {
commit('SET_LOADING', true);
try {
const response = await axios.get(`admin/store/categories?page=${payload.page}`);
const checkErrors = checkResponse(response);
if (checkErrors) {
commit('SET_DIALOG_MESSAGE', checkErrors.message, { root: true });
} else {
commit('SET_STORE_CATEGORIES', response.data);
}
} catch (e) {
commit('SET_DIALOG_MESSAGE', 'errors.generic_error', { root: true });
} finally {
commit('SET_LOADING', false);
}
};
这是我的 SET_STORE_CATEGORIES:
const SET_STORE_CATEGORIES = (state, payload) => {
state.categories=payload.data;
state.pagination = {
currentPage: payload.current_page,
perPage: payload.per_page,
totalCategories: payload.total,
totalPages: payload.last_page,
};
};
这里我想添加修改值,将字符串转换为对象。不得不补充:
let parsed=[];
parsed=response.data.data.map((item)=>{
console.log(item);
let tmp=item;
tmp.settings=JSON.parse(item.settings);
return tmp;
});
response.data.data=parsed;
commit('SET_STORE_CATEGORIES', response.data);
解决方案
您可以通过将该字符串解析为一个对象,按如下方式映射您的响应数据:
let parsed=[];
parsed=response.data.map((item)=>{
let tmp=item;
tmp.settings=JSON.parse(item.settings);
return tmp;
});
commit('SET_STORE_CATEGORIES', parsed);
推荐阅读
- flutter - 没有名为“nullOk”的命名参数。上下文!=空?Localizations.localeOf(context, nullOk: true) : null,
- java - 如何使用 SwissEPH 获取日月经度?
- spring-boot - 删除十进制 Java 变量
- javascript - 在 JavaScript 中使用 Promise 和 Async/Await
- python - 在 Python 中,从函数内部更改函数外部对象的操作原理是什么?
- html - 如何在我的 ASP.NET Core MVC 项目中使用 Selected2 搜索栏?
- javascript - 如何根据屏幕大小有条件地运行 JavaScipt?
- python - 组织和管理 Django 电子邮件模板的最佳实践
- python - 分解多个 pandas 列并取消嵌套一列作为列名
- r - 通过从一个大列表中的两个子列表中选择数据来创建一个数组