【发布时间】:2022-11-20 23:31:11
【问题描述】:
收到 json 对象后,(来自 REST api)
jsonDecode 创建一个 List<Map<String,dynamic>> 变量,
在 for 语句中,做 map['key'] = anyValue;试试看。
我想我发现了一个 flutter 错误。
"data": [
{
"id": 1,
"title": "",
"price": null,
"some": [
{
"needToChange": 1 (int)
}
],
}
]
List<dynamic> data = jsonDecode(res.body)['data'];
for(int i = 0 ; i < 10 ; i++){
data['some']['needToChange'] = someArray[i]; // new int value
print(data['some']['needToChange']); // it is changed for now but it rolls back when scope is dead
}
print(data['some']['needToChange']) // it results 1 nothing changed
完整代码
dynamic res = await http.post(
Uri.parse(C_URL_BASE + '/v1/post-query/abc'),
headers: {
"Content-Type": "application/json",
"Accept": "application/json",
},
body: body);
Map<String, dynamic> jsonData = json.decode(res.body);
List<dynamic> myList = [];
for (int i = 0; i < jsonData['data']['someA'].length; i++) {
for (int k = 0; k < jsonData['data']['someB'].length; k++) {
if (jsonData['data']['someA'][i]['nestedA'] ==
jsonData['data']['someB'][k]['nestedB']) {
var map = jsonData['data']['someB'][k];
print(jsonData['data']['someA'][i]['id']);
map.update('needToChange',
(value) => jsonData['data']['someA'][i]['id']);
myList.add(map);
}
}
}
print("it begins " + myList.length.toString());
for (int i = 0; i < myList.length; i++) {
print(myList[i]['needToChange']); //nothing changed!!
}
json数据
"someA": [
{
"nestedA": 2,
"id": 5
},
{
"nestedA": 1,
"id": 2
},
{
"nestedA": 2,
"id": 4
},
{
"nestedA": 1,
"id": 3
},
{
"nestedA": 1,
"id": 1
}
],
"someB": [
{
"id": 1,
"needToChange": 111,
},],]
我添加了更多,我确定它们在列表中,请查看
这就是我所有的
我确定这是一个 Flutter 错误
【问题讨论】:
-
您可以添加示例 sn-p 代码以便我们运行测试吗?
-
你想获得价值吗?
-
@YeasinSheikh 是的,我需要从服务器更改嵌套 Json 对象内的 int 数据,并且还需要获取列表。我需要使用 for 语句
-
从服务器,是服务器端代码还是用户端?
-
@YeasinSheikh 客户端(Flutter)