在 flutter 中将对象列表到 json
List object to json in flutter
你好,我是 flutter 的新手,这个对象包含所有产品的详细信息,所以当将产品添加到购物车时,我希望它以 json 格式存储所有详细信息,我可以稍后检索它。
这是项目class
class Item {
String productName;
String productImage;
int productQuatity;
int productId;
double productPrice;
String productColor;
String productSize;
Item(this.productName, this.productImage, this.productQuatity, this.productId, this.productPrice, this.productColor, this.productSize);
Map toJson() => {
'id': productId.toString(),
'productName': productName.toString(),
'colors': {
'type': productColor.toString(),
'sizes': {'type': productSize.toString(), 'amount': productQuatity}
},
};
}
这也是加项通知
class AddItemNotifiy extends ChangeNotifier {
List<Item> listItem = [];
List<FinalProducts> finalProducts = [];
addItem(String productName, String productImage, int productQuatity, int productId, double productPrice, String productColor, String productSize) async {
Item item = Item(productName, productImage, productQuatity, productId, productPrice, productColor, productSize);
listItem.add(item);
notifyListeners();
}
void removeItem(Item _item) async {
listItem.remove(_item);
notifyListeners();
}
void toJsonForm(Item item) async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
String currency;
List<String> myList = List<String>(listItem.length);
for (var i = 0; i <= listItem.length - 1; i++) {
myList[i] = listItem[i].toJson().toString();
}
sharedPreferences.setString('productList',myList.toString() );
currency = sharedPreferences.getString("productList");
print(jsonDecode (myList));
}
}
输出就是这样
[{_id: 2, productName: Updated name, colors: {type: grey, sizes: {type: m, amount: 10}}},{_id: 2, productName: Updated name, colors: {type: grey, sizes: {type: m, amount: 10}}}]
但我希望它是这样的
[
{
Id: "2",
colors: [
{
type: "black",
size: {
type: 46,
amount: 2
}
}
]
},
{
Id: "2",
colors: [
{
type: "red",
size: {
type: 46,
amount: 2
}
}
]
},
]
我也使用 provider 进行状态管理
您可以使用 jsonEncode
将对象转换为 JSON 字符串。
这应该有效:
var myList = listItem.map((el) => el.toJson()).toList();
// Save the list as a string
sharedPreferences.setString('productList', myList.toString());
// Convert the list to a JSON string
print(jsonEncode(myList));
你好,我是 flutter 的新手,这个对象包含所有产品的详细信息,所以当将产品添加到购物车时,我希望它以 json 格式存储所有详细信息,我可以稍后检索它。
这是项目class
class Item {
String productName;
String productImage;
int productQuatity;
int productId;
double productPrice;
String productColor;
String productSize;
Item(this.productName, this.productImage, this.productQuatity, this.productId, this.productPrice, this.productColor, this.productSize);
Map toJson() => {
'id': productId.toString(),
'productName': productName.toString(),
'colors': {
'type': productColor.toString(),
'sizes': {'type': productSize.toString(), 'amount': productQuatity}
},
};
}
这也是加项通知
class AddItemNotifiy extends ChangeNotifier {
List<Item> listItem = [];
List<FinalProducts> finalProducts = [];
addItem(String productName, String productImage, int productQuatity, int productId, double productPrice, String productColor, String productSize) async {
Item item = Item(productName, productImage, productQuatity, productId, productPrice, productColor, productSize);
listItem.add(item);
notifyListeners();
}
void removeItem(Item _item) async {
listItem.remove(_item);
notifyListeners();
}
void toJsonForm(Item item) async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
String currency;
List<String> myList = List<String>(listItem.length);
for (var i = 0; i <= listItem.length - 1; i++) {
myList[i] = listItem[i].toJson().toString();
}
sharedPreferences.setString('productList',myList.toString() );
currency = sharedPreferences.getString("productList");
print(jsonDecode (myList));
}
}
输出就是这样
[{_id: 2, productName: Updated name, colors: {type: grey, sizes: {type: m, amount: 10}}},{_id: 2, productName: Updated name, colors: {type: grey, sizes: {type: m, amount: 10}}}]
但我希望它是这样的
[
{
Id: "2",
colors: [
{
type: "black",
size: {
type: 46,
amount: 2
}
}
]
},
{
Id: "2",
colors: [
{
type: "red",
size: {
type: 46,
amount: 2
}
}
]
},
]
我也使用 provider 进行状态管理
您可以使用 jsonEncode
将对象转换为 JSON 字符串。
这应该有效:
var myList = listItem.map((el) => el.toJson()).toList();
// Save the list as a string
sharedPreferences.setString('productList', myList.toString());
// Convert the list to a JSON string
print(jsonEncode(myList));