如何在 Dart 中生成自定义 json 数据?
How custom json data can be generated in Dart?
我想从此模型生成自定义 json:
class Book {
List<Route> routes;
double distance;
int rateId;
List<int> optionsIds;
String comment;
int regionId;
}
class Route {
double lat;
double lng;
int order;
String address;
}
var book = Book();
book.routes = [Route(lat: 12, lng: 12, order: 0,address: 'address1'), Route(lat: 12, lng: 12, order: 1,address: 'address2')];
book.distance = 10.3;
book.rateId = 0;
book.optionsIds = [1,2];
book.comment = 'book comment';
book.regionId = 1;
我需要这个json:
{
"routes[0][address]": "Aviasozlar, 24",
"routes[0][lat]": 12,
"routes[0][lng]": 12,
"routes[0][order]": 0,
"routes[1][address]": "Mustaqillik maydoni",
"routes[1][lat]": 12,
"routes[1][lng]": 12,
"routes[1][order]": 1,
"distance": 12,
"rate_id": 1,
"option_ids[]": 1,
"option_ids[]": 2,
"comment": "komment 1",
"region_id": 1,
}
忽略此文本:看起来您的 post 主要是代码;请添加更多详细信息。
忽略此文本:看起来您的 post 主要是代码;请添加更多详细信息。
只需为您的 Book
class 创建一个方法 toJson
。
class Book {
List<Route> routes;
double distance;
int rateId;
List<int> optionsIds;
String comment;
int regionId;
Map<String, dynamic> toJson() {
Map<String, dynamic> json = {};
for (int i = 0; i < routes.length; i++) {
json['routes[$i][address]'] = routes[i].address;
json['routes[$i][lat]'] = routes[i].lat;
json['routes[$i][lng]'] = routes[i].lng;
json['routes[$i][order]'] = routes[i].order;
}
json['distance'] = distance;
json['rate_id'] = rateId;
for (int i = 0; i < optionsIds.length; i++) {
json['option_ids[$i]'] = optionsIds[i];
}
json['comment'] = comment;
json['region_id'] = regionId;
return json;
}
}
然后只需将 jsonEncode
应用于返回的 Map<String, dynamic>
。
print(jsonEncode(book.toJson()));
格式化结果:
{
"routes[0][address]":"address1",
"routes[0][lat]":12,
"routes[0][lng]":12,
"routes[0][order]":0,
"routes[1][address]":"address2",
"routes[1][lat]":12,
"routes[1][lng]":12,
"routes[1][order]":1,
"distance":10.3,
"rate_id":0,
"option_ids[0]":1,
"option_ids[1]":2,
"comment":"book comment",
"region_id":1
}
我想从此模型生成自定义 json:
class Book {
List<Route> routes;
double distance;
int rateId;
List<int> optionsIds;
String comment;
int regionId;
}
class Route {
double lat;
double lng;
int order;
String address;
}
var book = Book();
book.routes = [Route(lat: 12, lng: 12, order: 0,address: 'address1'), Route(lat: 12, lng: 12, order: 1,address: 'address2')];
book.distance = 10.3;
book.rateId = 0;
book.optionsIds = [1,2];
book.comment = 'book comment';
book.regionId = 1;
我需要这个json:
{
"routes[0][address]": "Aviasozlar, 24",
"routes[0][lat]": 12,
"routes[0][lng]": 12,
"routes[0][order]": 0,
"routes[1][address]": "Mustaqillik maydoni",
"routes[1][lat]": 12,
"routes[1][lng]": 12,
"routes[1][order]": 1,
"distance": 12,
"rate_id": 1,
"option_ids[]": 1,
"option_ids[]": 2,
"comment": "komment 1",
"region_id": 1,
}
忽略此文本:看起来您的 post 主要是代码;请添加更多详细信息。
忽略此文本:看起来您的 post 主要是代码;请添加更多详细信息。
只需为您的 Book
class 创建一个方法 toJson
。
class Book {
List<Route> routes;
double distance;
int rateId;
List<int> optionsIds;
String comment;
int regionId;
Map<String, dynamic> toJson() {
Map<String, dynamic> json = {};
for (int i = 0; i < routes.length; i++) {
json['routes[$i][address]'] = routes[i].address;
json['routes[$i][lat]'] = routes[i].lat;
json['routes[$i][lng]'] = routes[i].lng;
json['routes[$i][order]'] = routes[i].order;
}
json['distance'] = distance;
json['rate_id'] = rateId;
for (int i = 0; i < optionsIds.length; i++) {
json['option_ids[$i]'] = optionsIds[i];
}
json['comment'] = comment;
json['region_id'] = regionId;
return json;
}
}
然后只需将 jsonEncode
应用于返回的 Map<String, dynamic>
。
print(jsonEncode(book.toJson()));
格式化结果:
{
"routes[0][address]":"address1",
"routes[0][lat]":12,
"routes[0][lng]":12,
"routes[0][order]":0,
"routes[1][address]":"address2",
"routes[1][lat]":12,
"routes[1][lng]":12,
"routes[1][order]":1,
"distance":10.3,
"rate_id":0,
"option_ids[0]":1,
"option_ids[1]":2,
"comment":"book comment",
"region_id":1
}