未从json列表中获取所需值-颤振
我有这个代码,我可以从一个 main.dart未从json列表中获取所需值-颤振,json,flutter,dart,Json,Flutter,Dart,我有这个代码,我可以从一个 main.dart final String url = 'https://raw.githubusercontent.com/BrightCode1/ohms-json/master/categories.json'; List<JsonModel> myModel = []; List<CatSubcategory> subCate = []; int localInt; @override void initState()
final String url = 'https://raw.githubusercontent.com/BrightCode1/ohms-json/master/categories.json';
List<JsonModel> myModel = [];
List<CatSubcategory> subCate = [];
int localInt;
@override
void initState() {
// TODO: implement initState
super.initState();
localInt = 0;
loadData(localInt);
}
loadData(int dataInt) async {
var res = await http.get(url, headers: {"Accept": "application/json"});
if (res.statusCode == 200) {
String resBody = res.body;
var jsonDecode = json.decode(resBody);
for (var data in jsonDecode) {
data['cat_subcategory'].map((x) {
return subCate.add(
CatSubcategory(subName: x['sub_name'], subImage: x['sub_image']));
}).toList();
myModel.add(JsonModel(
category: data['category'],
catId: data['cat_id'],
catIcon: data['cat_icon'],
catSubcategory: subCate));
setState(() {});
}
print(myModel[dataInt].catSubcategory.length);
} else {
print("Something went wrong!");
}
}
class JsonModel {
JsonModel({
this.category,
this.catId,
this.catIcon,
this.catSubcategory,
});
String category;
String catId;
String catIcon;
List<CatSubcategory> catSubcategory;
factory JsonModel.fromJson(Map<String, dynamic> json) => JsonModel(
category: json["category"],
catId: json["cat_id"],
catIcon: json["cat_icon"],
catSubcategory: List<CatSubcategory>.from(
json["cat_subcategory"].map((x) => CatSubcategory.fromJson(x))),
);
Map<String, dynamic> toJson() => {
"category": category,
"cat_id": catId,
"cat_icon": catIcon,
"cat_subcategory":
List<dynamic>.from(catSubcategory.map((x) => x.toJson())),
};
}
class CatSubcategory {
CatSubcategory({
this.subName,
this.subImage,
});
String subName;
String subImage;
factory CatSubcategory.fromJson(Map<String, dynamic> json) => CatSubcategory(
subName: json["sub_name"],
subImage: json["sub_image"],
);
Map<String, dynamic> toJson() => {
"sub_name": subName,
"sub_image": subImage,
};
}
final String url='1〕https://raw.githubusercontent.com/BrightCode1/ohms-json/master/categories.json';
列出myModel=[];
列表子类别=[];
内部本地化;
@凌驾
void initState(){
//TODO:实现initState
super.initState();
localent=0;
loadData(localent);
}
加载数据(int-dataInt)异步{
var res=await http.get(url,头:{“Accept”:“application/json”});
如果(res.statusCode==200){
字符串resBody=res.body;
var jsonDecode=json.decode(resBody);
for(jsonDecode中的var数据){
数据['cat_子类别]].map((x){
返回subCate.add(
CatSubcategory(子名称:x['sub_name'],子图像:x['sub_image']);
}).toList();
添加(JsonModel(
类别:数据['category'],
catId:data['cat_id'],
catIcon:数据['cat_图标],
catSubcategory:subCate));
setState((){});
}
打印(myModel[dataInt].catSubcategory.length);
}否则{
打印(“出问题了!”);
}
}
我的模型。飞镖
final String url = 'https://raw.githubusercontent.com/BrightCode1/ohms-json/master/categories.json';
List<JsonModel> myModel = [];
List<CatSubcategory> subCate = [];
int localInt;
@override
void initState() {
// TODO: implement initState
super.initState();
localInt = 0;
loadData(localInt);
}
loadData(int dataInt) async {
var res = await http.get(url, headers: {"Accept": "application/json"});
if (res.statusCode == 200) {
String resBody = res.body;
var jsonDecode = json.decode(resBody);
for (var data in jsonDecode) {
data['cat_subcategory'].map((x) {
return subCate.add(
CatSubcategory(subName: x['sub_name'], subImage: x['sub_image']));
}).toList();
myModel.add(JsonModel(
category: data['category'],
catId: data['cat_id'],
catIcon: data['cat_icon'],
catSubcategory: subCate));
setState(() {});
}
print(myModel[dataInt].catSubcategory.length);
} else {
print("Something went wrong!");
}
}
class JsonModel {
JsonModel({
this.category,
this.catId,
this.catIcon,
this.catSubcategory,
});
String category;
String catId;
String catIcon;
List<CatSubcategory> catSubcategory;
factory JsonModel.fromJson(Map<String, dynamic> json) => JsonModel(
category: json["category"],
catId: json["cat_id"],
catIcon: json["cat_icon"],
catSubcategory: List<CatSubcategory>.from(
json["cat_subcategory"].map((x) => CatSubcategory.fromJson(x))),
);
Map<String, dynamic> toJson() => {
"category": category,
"cat_id": catId,
"cat_icon": catIcon,
"cat_subcategory":
List<dynamic>.from(catSubcategory.map((x) => x.toJson())),
};
}
class CatSubcategory {
CatSubcategory({
this.subName,
this.subImage,
});
String subName;
String subImage;
factory CatSubcategory.fromJson(Map<String, dynamic> json) => CatSubcategory(
subName: json["sub_name"],
subImage: json["sub_image"],
);
Map<String, dynamic> toJson() => {
"sub_name": subName,
"sub_image": subImage,
};
}
classjsonmodel{
JsonModel({
这一类,,
这个.catId,
这是卡蒂肯,
此.cats子类别,
});
字符串类别;
字符串catId;
线状catIcon;
列出子类别;
工厂JsonModel.fromJson(映射json)=>JsonModel(
类别:json[“类别”],
catId:json[“cat_id”],
catIcon:json[“cat_图标”],
catSubcategory:List.from(
json[“cat_subcategory”].map((x)=>CatSubcategory.fromJson(x)),
);
映射到JSON()=>{
“类别”:类别,
“cat_id”:catId,
“cat_图标”:catIcon,
“cat_子类别”:
List.from(catSubcategory.map((x)=>x.toJson()),
};
}
类CatSubcategory{
CatSubcategory({
这个.subName,
这个子图像,
});
字符串子名称;
字符串子图像;
factory CatSubcategory.fromJson(映射json)=>CatSubcategory(
子名称:json[“子名称”],
子映像:json[“子映像”],
);
映射到JSON()=>{
“子名称”:子名称,
“子图像”:子图像,
};
}
我现在唯一的问题是,当我试图在第一个列表的子类别上打印长度时,它给我的是
24
,而不是6
,我这样打印myModel[dataInt].catSubcategory.length
。dataInt
为0,这意味着它应该打印出子项的长度(“cat_子类别”
),其类别为设计与创意
,但它正在打印其他lis的所有其他子项。那么,我该怎么做呢。如果您需要更多解释,请告诉我如果您已经知道json的模式,我将避免从头开始编写您自己的模型
只要使用类似粘贴json的东西,您就会得到
import 'dart:convert';
class Root {
Root({
this.category,
this.catId,
this.catIcon,
this.catSubcategory,
});
String category;
String catId;
String catIcon;
List<CatSubcategory> catSubcategory;
factory Root.fromJson(Map<String, dynamic> json) => Root(
category: json["category"],
catId: json["cat_id"],
catIcon: json["cat_icon"] == null ? null : json["cat_icon"],
catSubcategory: List<CatSubcategory>.from(json["cat_subcategory"].map((x) => CatSubcategory.fromJson(x))),
);
Map<String, dynamic> toJson() => {
"category": category,
"cat_id": catId,
"cat_icon": catIcon == null ? null : catIcon,
"cat_subcategory": List<dynamic>.from(catSubcategory.map((x) => x.toJson())),
};
}
class CatSubcategory {
CatSubcategory({
this.subName,
this.subImage,
});
String subName;
String subImage;
factory CatSubcategory.fromJson(Map<String, dynamic> json) => CatSubcategory(
subName: json["sub_name"],
subImage: json["sub_image"],
);
Map<String, dynamic> toJson() => {
"sub_name": subName,
"sub_image": subImage,
};
}
导入'dart:convert';
类根{
根({
这一类,,
这个.catId,
这是卡蒂肯,
此.cats子类别,
});
字符串类别;
字符串catId;
线状catIcon;
列出子类别;
工厂根.fromJson(映射json)=>根(
类别:json[“类别”],
catId:json[“cat_id”],
catIcon:json[“cat_图标”]==null?null:json[“cat_图标”],
catSubcategory:List.from(json[“cat_subcategory”].map((x)=>catSubcategory.fromJson(x)),
);
映射到JSON()=>{
“类别”:类别,
“cat_id”:catId,
“cat_图标”:catIcon==null?null:catIcon,
“catu子类别”:List.from(catSubcategory.map((x)=>x.toJson()),
};
}
类CatSubcategory{
CatSubcategory({
这个.subName,
这个子图像,
});
字符串子名称;
字符串子图像;
factory CatSubcategory.fromJson(映射json)=>CatSubcategory(
子名称:json[“子名称”],
子映像:json[“子映像”],
);
映射到JSON()=>{
“子名称”:子名称,
“子图像”:子图像,
};
}
然后你就应该好好的
loadData(int dataInt) async {
var res = await http.get(url, headers: {"Accept": "application/json"});
if (res.statusCode == 200) {
String resBody = res.body;
var list = json.decode(resBody) as List;
List<Root> items = list.map((i)=>Root.fromJson(i)).toList();
print(items[0].catSubcategory.length);
}
} else {
print("Something went wrong!");
}
}
loadData(int-dataInt)异步{
var res=await http.get(url,头:{“Accept”:“application/json”});
如果(res.statusCode==200){
字符串resBody=res.body;
var list=json.decode(resBody)作为列表;
List items=List.map((i)=>Root.fromJson(i)).toList();
打印(项目[0].catSubcategory.length);
}
}否则{
打印(“出问题了!”);
}
}