Json字符串数组到Vuex中的对象
Posted
技术标签:
【中文标题】Json字符串数组到Vuex中的对象【英文标题】:Json string array to object in Vuex 【发布时间】:2019-06-27 08:41:59 【问题描述】:在我的州,我有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);
【问题讨论】:
使用JSON.parse(yourString)
函数
@BoussadjraBrahim,这很干净,但我想在保存到各州之前这样做
请在您的问题中提供更多详细信息
你为什么要response.data.data=parsed;
?
我的回复是分页回复。
【参考方案1】:
您可以通过将该字符串解析为一个对象,将您的响应数据映射如下:
let parsed=[];
parsed=response.data.map((item)=>
let tmp=item;
tmp.settings=JSON.parse(item.settings);
return tmp;
);
commit('SET_STORE_CATEGORIES', parsed);
【讨论】:
出现错误。我想我的响应数据是一个数组,其中 cat 比 1 多。 这是什么错误?请打印该响应并给我输出以上是关于Json字符串数组到Vuex中的对象的主要内容,如果未能解决你的问题,请参考以下文章