Convert List Object to JSON java

In this Dart/Flutter JSON encode tutorial, I will show you ways to convert Object, Nested Object, List, List of JSON objects into JSON string. Finally, you can convert a complex Nested Object [that contains some fields and a List of objects field] into JSON string.

Related Posts:
Dart/Flutter Convert/Parse JSON string, array into Object, List
Dart/Flutter Constructors tutorial with examples
Dart/Flutter String Methods & Operators tutorial with examples
Dart/Flutter Future Tutorial with Examples
Dart/Flutter List Tutorial with Examples
Dart/Flutter Map Tutorial with Examples


Contents

  • Overview
  • Dart/Flutter convert simple Object to JSON string
  • Dart/Flutter convert Nested Object to JSON string
  • Dart/Flutter convert List to JSON string
  • Dart/Flutter convert List of objects to JSON string
  • Dart/Flutter convert complex Nested Object to JSON string
  • Conclusion
  • Further Reading

Overview

dart:convert library provides a built-in top-level function called jsonEncode that can convert many types of Object to JSON string.

We have 3 steps to convert an Object/List to JSON string:

  • create the class
  • create toJson[] method which returns a JSON object that has key/value pairs corresponding to all fields of the class
  • get JSON string from JSON object/List using jsonEncode[] function

For every type of Object, Nested Object, simple List, List of Objects, or Nested Object containing List, we will implement toJson[] method with some little difference.

Dart/Flutter convert simple Object to JSON string

Assume that we have a User class with fields: name & age.

class User { String name; int age; User[this.name, this.age]; }

If you call jsonEncode[] function without creating toJson[] method. You will get an error:

Unhandled exception: Converting object to an encodable object failed: Instance of 'User' ...

Lets create toJson[] method like the following code:

class User { String name; int age; User[this.name, this.age]; Map toJson[] => { 'name': name, 'age': age, }; }

Now we can use dart:convert librarys built-in jsonEncode[] function to convert the User object to JSON string:

import 'dart:convert'; main[] { User user = User['bezkoder', 21]; String jsonUser = jsonEncode[user]; print[jsonUser]; }

The result will show a string like this.

{"name":"bezkoder","age":21}

Dart/Flutter convert Nested Object to JSON string

If we have a Tutorial class and author is a field that has User class type.
Were gonna create toJson[] method with the author is the result when calling Users toJson[] method.

class User { String name; int age; ... } class Tutorial { String title; String description; User author; Tutorial[this.title, this.description, [this.author]]; Map toJson[] { Map author = this.author != null ? this.author.toJson[] : null; return {'title': title, 'description': description, 'author': author}; } }

Remember to check if author property is null or not.
Now we can easily call jsonEncode[] like this.

import 'dart:convert'; main[] { User user = User['bezkoder', 21]; Tutorial tutorial = Tutorial['Dart Tut#1', 'Tut#1 Description', user]; String jsonTutorial = jsonEncode[tutorial]; print[jsonTutorial]; }

Check the result, you can see our JSON string:

{"title":"Dart Tut#1","description":"Tut#1 Description","author":{"name":"bezkoder","age":21}}

Dart/Flutter convert List to JSON string

We can easily do JSON encode a List without the need of creating any class.

import 'dart:convert'; main[] { List tags = ['tagA', 'tagB', 'tagC']; String jsonTags = jsonEncode[tags]; print[jsonTags]; }

The result shows a JSON string array:

["tagA","tagB","tagC"]

Dart/Flutter convert List of objects to JSON string

How about more complicated List? For example, every item in the List is a Tag object.
The Tag class has 2 fields: name & quantity. So we also need to create toJson[] method that return a Map.

class Tag { String name; int quantity; Tag[this.name, this.quantity]; Map toJson[] => { 'name': name, 'quantity': quantity, }; }

Now everything becomes simple with jsonEncode[] function.

import 'dart:convert'; main[] { List tags = [Tag['tagA', 3], Tag['tagB', 6], Tag['tagC', 8]]; String jsonTags = jsonEncode[tags]; print[jsonTags]; }

JSON string looks like an array:

[{"name":"tagA","quantity":3},{"name":"tagB","quantity":6},{"name":"tagC","quantity":8}]

Dart/Flutter convert complex Nested Object to JSON string

Yeah! Youre in the last section of this tutorial.
We will convert a complex Nested Object that contains some fields and a List of objects field into JSON string.

For example, Tutorial class has title, description, author [User class], tags [List]:

class Tutorial { String title; String description; User author; List tags; Tutorial[this.title, this.description, [this.author, this.tags]]; }

Were gonna define the toJson[] method like this:

class Tutorial { ... Map toJson[] { Map author = this.author != null ? this.author.toJson[] : null; List tags = this.tags != null ? this.tags.map[[i] => i.toJson[]].toList[] : null; return { 'title': title, 'description': description, 'author': author, 'tags': tags }; } }

In the constructor method, we set author and tags optional.
So when initializing a Tutorial, we dont need to pass these fields as parameters.

We use map on tags property to return the JSON object. Then, convert the map result to a List of JSON object using toList[] method.

Our main[] function will be like this.

import 'dart:convert'; main[] { User user = User['bezkoder', 21]; String jsonUser = jsonEncode[user]; print[jsonUser]; List tags = [Tag['tagA', 3], Tag['tagB', 6], Tag['tagC', 8]]; String jsonTags = jsonEncode[tags]; print[jsonTags]; Tutorial tutorial = Tutorial['Dart Tut#2', 'Tut#2 Description', user, tags]; String jsonTutorial = jsonEncode[tutorial]; print[jsonTutorial]; }

Lets check the result in console, you will see the JSON string.

{"title":"Dart Tut#2","description":"Tut#2 Description","author":{"name":"bezkoder","age":21},"tags":[{"name":"tagA","quantity":3},{"name":"tagB","quantity":6},{"name":"tagC","quantity":8}]}

If we dont initialize Tutorial with author and tags as the following code.

import 'dart:convert'; main[] { Tutorial tutorial = Tutorial['Dart Tut#3', 'Tut#3 Description']; String jsonTutorial = jsonEncode[tutorial]; print[jsonTutorial]; }

This is the result:

{"title":"Dart Tut#3","description":"Tut#3 Description","author":null,"tags":null}

Conclusion

Thats how we convert many kind of Objects and List to JSON string in Dart/Flutter. One of the most important part to make our work simple is the dart:convert librarys built-in jsonEncode[] function.

You can find way to convert in the opposite way at:
Dart/Flutter Convert/Parse JSON string, array into Object, List

Happy Learning! See you again.

Further Reading

  • dart:convert library
  • //www.w3schools.com/js/js_json_objects.asp

Dart/Flutter Constructors tutorial with examples
Dart/Flutter String Methods & Operators tutorial with examples
Dart/Flutter Future Tutorial with Examples
Dart/Flutter List Tutorial with Examples
Dart/Flutter Map Tutorial with Examples

Video liên quan

Chủ Đề