반응형
다트 플래터에서 json 문자열을 json 객체로 변환하는 방법?
이런 끈이 있는데
{id:1, name: lorem ipsum, address: dolor set amet}
그리고 그 줄을 json으로 변환해야 하는데, 다트 플래터로 어떻게 할 수 있죠?당신의 도움에 감사 드립니다.
사용하셔야 합니다.json.decode
. json 객체를 사용하여 중첩된 키 값 쌍을 처리할 수 있습니다.예를 들어 드리겠습니다.
import 'dart:convert';
// actual data sent is {success: true, data:{token:'token'}}
final response = await client.post(url, body: reqBody);
// Notice how you have to call body from the response if you are using http to retrieve json
final body = json.decode(response.body);
// This is how you get success value out of the actual json
if (body['success']) {
//Token is nested inside data field so it goes one deeper.
final String token = body['data']['token'];
return {"success": true, "token": token};
}
모델 클래스 만들기
class User {
int? id;
String? name;
String? address;
User({this.id, this.name, this.address});
User.fromJson(Map<String, dynamic> json) {
id = json['id'];
name = json['name'];
address = json['address'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['name'] = this.name;
data['address'] = this.address;
return data;
}
}
논리 섹션
String data ='{id:1, name: lorem ipsum, address: dolor set amet}';
var encodedString = jsonEncode(data);
Map<String, dynamic> valueMap = json.decode(encodedString);
User user = User.fromJson(valueMap);
Import도 필요
Import 'syslog:syslog';
다음과 같이 JSON 배열을 개체 목록으로 변환할 수도 있습니다.
String jsonStr = yourMethodThatReturnsJsonText();
Map<String,dynamic> d = json.decode(jsonStr.trim());
List<MyModel> list = List<MyModel>.from(d['jsonArrayName'].map((x) => MyModel.fromJson(x)));
그리고.MyModel
다음과 같습니다.
class MyModel{
String name;
int age;
MyModel({this.name,this.age});
MyModel.fromJson(Map<String, dynamic> json) {
name= json['name'];
age= json['age'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = this.name;
data['age'] = this.age;
return data;
}
}
String name = "{click_action: FLUTTER_NOTIFICATION_CLICK, sendByImage: https://ujjwalchef.staging-server.in/uploads/users/1636620532.png, status: done, sendByName: mohittttt, id: HM11}";
List<String> str = name.replaceAll("{","").replaceAll("}","").split(",");
Map<String,dynamic> result = {};
for(int i=0;i<str.length;i++){
List<String> s = str[i].split(":");
result.putIfAbsent(s[0].trim(), () => s[1].trim());
}
print(result);
}
가끔 이걸 쓰셔야 할 것 같아요.
Map<String, dynamic> toJson() {
return {
jsonEncode("phone"): jsonEncode(numberPhone),
jsonEncode("country"): jsonEncode(country),
};
}
이 코드는 {"number"와 같은 문자열을 제공합니다.전화":"+225657869", "country":CI"}.그래서 쉽게 해독할 수 있습니다.
json.decode({"numberPhone":"+22565786589", "country":"CI"})
dart:encode libary를 Import해야 합니다.그런 다음 맵과 유사한 다이내믹을 생성하는 jsonDecode 함수를 사용합니다.
https://api.dartlang.org/stable/2.2.0/dart-convert/dart-convert-library.html
문자열을 JSON으로 변환하려면 커스텀 로직으로 수정해야 합니다.여기에서는 어레이와 오브젝트의 기호를 모두 삭제하고 다음으로 특수문자로 텍스트를 분할하여 키와 값(맵용)을 추가합니다.이 코드 스니펫을 다트패드로 시험해 보세요.개발
import 'dart:developer';
void main() {
String stringJson = '[{product_id: 1, quantity: 1, price: 16.5}]';
stringJson = removeJsonAndArray(stringJson);
var dataSp = stringJson.split(',');
Map<String, String> mapData = {};
for (var element in dataSp) {
mapData[element.split(':')[0].trim()] = element.split(':')[1].trim();
}
print("jsonInModel: ${DemoModel.fromJson(mapData).toJson()}");
}
String removeJsonAndArray(String text) {
if (text.startsWith('[') || text.startsWith('{')) {
text = text.substring(1, text.length - 1);
if (text.startsWith('[') || text.startsWith('{')) {
text = removeJsonAndArray(text);
}
}
return text;
}
class DemoModel {
String? productId;
String? quantity;
String? price;
DemoModel({this.productId, this.quantity, this.price});
DemoModel.fromJson(Map<String, dynamic> json) {
log('json: ${json['product_id']}');
productId = json['product_id'];
quantity = json['quantity'];
price = json['price'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['product_id'] = productId;
data['quantity'] = quantity;
data['price'] = price;
return data;
}
}
언급URL : https://stackoverflow.com/questions/55292633/how-to-convert-json-string-to-json-object-in-dart-flutter
반응형
'programing' 카테고리의 다른 글
Google 클라우드 플랫폼의 Wordpress permalink가 작동하지 않습니다. (0) | 2023.03.22 |
---|---|
기능하는 setState를 사용하는 경우 (0) | 2023.03.22 |
워드프레스에서 '루트'를 작성하려면 어떻게 해야 합니까? (0) | 2023.03.22 |
농담 테스트를 실행할 때 모든 테스트 설명을 표시하는 옵션이 있습니까? (0) | 2023.03.22 |
mod_pagespeed 캐시 삭제? (0) | 2023.03.22 |