Fernando
Fernando

Reputation: 1517

The best way to parse a JSON in Dart

I'm trying to load a json file from a URL and parse it within Dart. So I had tried the following code as suggested from some links when I google for it:

   HttpRequest.getString("hellknight2.js").then((response)
   {
     var model = new JSON.parse(response);
   });

However, it seems to not work anymore on Dart SDK version 0.4.3.5_r20602. What is the current best way to get a Json file mapped to an object in Dart?

Upvotes: 33

Views: 57648

Answers (6)

Irakli Kardava
Irakli Kardava

Reputation: 199

Here is my solution :) At first, you need to import the convert package:

import 'dart:convert';

var res = json.decode(response.body);

then you can get values by key, like below:

print(res["message"]);

Upvotes: 9

user3196271
user3196271

Reputation: 1

you can try this package. pub: g_json

dynamic model = JSON.parse(JsonStringFromAnywhere);

final name = model['name'].stringValue;
// OR
final name = model.name;

Upvotes: 0

Alexandre Ardhuin
Alexandre Ardhuin

Reputation: 76183

Simply use json of the dart:convert package. Here is an example :

import 'dart:convert';

main() {
  final myJsonAsString = '{"a": 1, "b": "c"}';
  final decoded = json.decode(myJsonAsString);
  ....
}

See Parsing JSON for more details.

Upvotes: 40

Julien
Julien

Reputation: 4163

in my case

JSON.decode

didn't work.

Instead I had to use :

import 'dart:convert' as JSON;

final json=JSON.jsonDecode(myJsonAsString);

Upvotes: 9

DaviDeMo
DaviDeMo

Reputation: 117

It depends on a lot of things.

Is the json text you get is an array or a map?

You can try with:

Map model = new parse(response);

Or

List model = new parse(response);

but you need to import JSONObject by Chris Buckett into your package

import "package:json_object/json_object.dart";

You can install it from pubspec adding this dependency

json_object

Upvotes: 4

Alex F
Alex F

Reputation: 3539

There's a new pub package for this:

Victor Savkin - Serializers.

I didn't use it but seems to me that it will suite you. Try it out

Upvotes: 3

Related Questions