web-dev-qa-db-ja.com

ダートフラッターでjson文字列をjsonオブジェクトに変換する方法は?

私はこのようなひもを持っています、

{id:1, name: lorem ipsum, address: dolor set amet}

そして、私はその文字列をjsonに変換する必要があります、ダートフラッターでどのようにそれを行うことができますか?手伝ってくれてどうもありがとう。

3
Ashtav

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};
}
9
forJ

Dart:encodeライブラリをインポートする必要があります。次に、jsonDecode関数を使用します。これにより、Mapと同様のダイナミックが生成されます

https://api.dartlang.org/stable/2.2.0/Dart-convert/Dart-convert-library.html

次のように、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;
  }
}
0
Mohsen Emami