DAS*_*SH 5 json dart flutter flutter-dependencies
谁能告诉我如何在 flutter 中解析这个 JSON。我被困住了,我成功创建了类,但从解析方法中收到错误这是 JSON
{
"btcinr": {
"base_unit": "btc",
"quote_unit": "inr",
"low": "3001337.0",
"high": "3145000.0",
"last": "3107312.0",
"type": "SPOT",
"open": "3085453",
"volume": "243.1121",
"sell": "3114335.0",
"buy": "3106628.0",
"at": 1646663606,
"name": "BTC/INR"
}
}
Run Code Online (Sandbox Code Playgroud)
我被困住并出错的方法是
Future<List<Map<String, dynamic>>> fetchData() async {
final response =
await http.get(Uri.parse("https://api.wazirx.com/api/v2/tickers"));
if (response.statusCode == 200) {
final responseJson = json.decode(response.body);
} else {
throw Exception('Unexpected Error Occured!');
}
}
Run Code Online (Sandbox Code Playgroud)
此方法不完整,任何帮助将不胜感激,谢谢!
发布此嵌套 JSON 请求的示例以便更好地理解。该示例有一个列表RejectedModel
,该模型中有一个嵌套模型Reject
,下面的代码正在处理它。
得到了这种格式的 JSON 响应。
[
{
"id": 2,
"service": 200,
"reject": {
"id": 8,
"reason": "sample",
"order_id": 2,
}
},
{
"id": 3,
"service": 600,
"reject": {
"id": 12,
"reason": "sample",
"order_id": 2,
}
}
]
Run Code Online (Sandbox Code Playgroud)
控制器类看起来像这样
class RejectedModel{
int id;
int service;
Reject reject;
RejectedModel({required this.id, required this.service, required this.reject});
factory RejectedModel.fromJson (Map<String,dynamic>json){
return RejectedModel(id: json['id'],
service: json['service'],
reject: Reject.fromJson(json['reject']) );
}
}
class Reject{
//this will handel nested object
int id;
String reason;
int order_id;
Reject({required this.id, required this.reason, required this.order_id,});
factory Reject.fromJson (Map<String,dynamic>json){
return Reject(id: json['id'],
reason: json['reason'],
order_id: json['order_id']);
}
}
Run Code Online (Sandbox Code Playgroud)
在此方法中进行 API 调用。Future<List<RejectedModel>>
是以下方法的返回类型
Future getRejctedOrders() async {
final response = await http.get(Uri.parse('your url'));
if(response.statusCode == 200){
List rejected = json.decode(response.body);
return rejected.map((e) => RejectedModel.fromJson(e)).toList();
}
else{
throw Exception('something wrong');
}
}
Run Code Online (Sandbox Code Playgroud)
在小部件中使用此 API 调用来显示数据。<List<RejectedModel>>
之前(
和之后都写这个FutureBuilder
FutureBuilder <List<RejectedModel>> (
future: getRejctedOrders,
builder: (context,snapshot){
if(snapshot.hasData){
final List<RejectedModel>? data = snapshot.data;
return ListView.builder(
itemCount: data?.length,
shrinkWrap: true,
itemBuilder: (BuildContext context, int index){
if(index.isNaN){
return CircularProgressIndicator(color: Colors.grey,);
}
Reject rej = data![index].reject;
//you can make the required widget
return Text('data ${rej.reason}');
},
);
}
else{
return CircularProgressIndicator(color: Colors.grey,);
}
},
)
Run Code Online (Sandbox Code Playgroud)
我需要诚实地说,这是一个普遍的问题。但我会尽力按照我的理解来回答。如果你想创建一个json解析机制。您可以使用像本网站这样的代码生成方法。这会为您生成一个巨大的对象,但至少在解析信息之后,您可以获得一个对象来引用您需要的任何内容。
我从https://api.wazirx.com/api/v2/tickers得到了结果。把它放到上面的网站上。它在这里生成了代码。我无法在这里分享,因为它太大了:)
接下来您需要做的是:
Future<Autogenerated> fetchData() async {
final response =
await http.get(Uri.parse("https://api.wazirx.com/api/v2/tickers"));
if (response.statusCode == 200) {
final responseJson = json.decode(response.body);
final autogenerated = Autogenerated.fromJson(responseJson);
return autogenerated;
} else {
throw Exception('Unexpected Error Occured!');
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8061 次 |
最近记录: |