programing

다트 플래터에서 json 문자열을 json 객체로 변환하는 방법?

closeapi 2023. 3. 22. 21:14
반응형

다트 플래터에서 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

반응형