1、matlab获取json文件
jsonData=loadjson(jsonPath);
2、获取json文件中的嵌套变量
ueNum = struct(‘tPuschParIn’,jsonData.tPuschParIn).tPuschParIn.iPuschUeNum;
3、获取struct某个变量的值,getfield函数
value = getfield(tSystemParIn,‘iUE_RNTI’);
4、修改struct的数组变量的第一个值
tSystemParIn.iUE_RNTI(1) = value(i);
5、批量修改struct变量的值
循环signleField 得到各个变量field
tPuschParIn = setfield(tPuschParIn,field,result);
必须有左键,把修改后的结果重新赋值给tPuschParIn ,不然setfield不生效。
6、整体代码如下。
function [ueNum]=mulUeJsonSplit(jsonPath,pathName,upDown)%%
addpath(genpath([pwd '\jsonlab']));
jsonData=loadjson(jsonPath);
signleField = {'MCS','Layernum','RBStart','RBNum','CodeWordNum','iPtrsEn',...
'TimeSpace','FreqSpace','RB_offset','RE_offset','Che_Method','bDeNoiseEn'};
ueNum = struct('tPuschParIn',jsonData.tPuschParIn).tPuschParIn.iPuschUeNum;
for i=1:ueNum
%%
tSystemParIn = struct('tSystemParIn',jsonData.tSystemParIn).tSystemParIn; %struct
value = getfield(tSystemParIn,'iUE_RNTI');
valueLen = numel(value);
tSystemParIn.iUE_RNTI(1) = value(i);
for j = ueNum:valueLen-1
tSystemParIn.iUE_RNTI(j) = 0;
end
%%
tPuschParIn = struct('tPuschParIn',jsonData.tPuschParIn).tPuschParIn; %struct
[m,n] = size(signleField);
for j = 1:n
field = char(signleField(j));
value1 = getfield(tPuschParIn,field);
valueLen1 = numel(value1);
result = [value1(i) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
tPuschParIn = setfield(tPuschParIn,field,result);
end
%%
jsonmesh=struct('tSystemParIn',tSystemParIn,...
'tPuschParIn',tPuschParIn);
fname=sprintf('ueId%d.json',i);
savejson('',jsonmesh,fname);
end
end