Skip to content

Instantly share code, notes, and snippets.

@JoeCodeswell
Last active October 5, 2020 15:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JoeCodeswell/864394a7d86087113a7ad2ef2d80d542 to your computer and use it in GitHub Desktop.
Save JoeCodeswell/864394a7d86087113a7ad2ef2d80d542 to your computer and use it in GitHub Desktop.
Playing with JSON in dart. :)
/// JSONplay.dart
/// Playing with JSON in dart. :)
/// https://gist.github.com/JoeCodeswell/864394a7d86087113a7ad2ef2d80d542
/// https://dartpad.dev/864394a7d86087113a7ad2ef2d80d542
/// google: dart json
/// [Using JSON](https://dart.dev/guides/json)
/// [dart:convert - decoding and encoding JSON, UTF-8, and more](https://dart.dev/guides/libraries/library-tour#dartconvert---decoding-and-encoding-json-utf-8-and-more)
/// [dart:convert library](https://api.dart.dev/stable/2.8.4/dart-convert/dart-convert-library.html)
/// [How to parse Json in Flutter for Beginners](https://medium.com/flutter-community/how-to-parse-json-in-flutter-for-beginners-8074a68d7a79)
/// [JSON and serialization](https://flutter.dev/docs/development/data-and-backend/json)
/// [flutter cookbook Parse JSON in the background](https://flutter.dev/docs/cookbook/networking/background-parsing)
///
/// google:
/// "dart json" stinks
/// dart instantiate class from "json list"
/// [JSON to Dart](https://javiercbk.github.io/json_to_dart/)
/// [github](https://github.com/javiercbk/json_to_dart)
/// [Convert the response into a list of photos](https://flutter.dev/docs/cookbook/networking/background-parsing#convert-the-response-into-a-list-of-photos)
/// [Complete example](https://flutter.dev/docs/cookbook/networking/background-parsing#complete-example)
/// [2 Months of Flutter Development](https://dev.to/irosthebeggar/2-months-of-flutter-development-2gi5)
/// [General serialization for Dart objects.](https://github.com/google/serialization.dart)
///
/// See VERY HELPFUL ANSWERS IN [Mapping JSON into Class Objects](https://stackoverflow.com/a/45189401/601770)
import 'dart:convert';
import 'dart:convert';
void main() {
print(itmLstr.runtimeType); // String
var itmLstrJsDec = json.decode(itmLstr);
print(itmLstrJsDec.runtimeType); // JSArray<dynamic>
print(itmLstrJsDec[0].runtimeType); // _JsonMap
print(itmLstrJsDec[0]); // {name: Sarah, age: 19, role: Student}
assert(itmLstrJsDec[0] is Map );
// errors Undefined Names; [name, age, role]
// var jsonmap = {name: Sarah, age: 19, role: Student};
// JSArray<Map> joes_item_list_json_decode2 = json.decode(joes_item_list); // error unknown type JSArray
// [Complete example](https://flutter.dev/docs/cookbook/networking/background-parsing#complete-example)
/*
// A function that converts a response body into a List<Photo>.
List<Photo> parsePhotos(String responseBody) {
final parsed = jsonDecode(responseBody).cast<Map<String, dynamic>>();
return parsed.map<Photo>((json) => Photo.fromJson(json)).toList();
}
*/
List<JdiJsL> parseJdiJsLs(String responseBody) {
final parsed = jsonDecode(responseBody).cast<Map<String, dynamic>>();
return parsed.map<JdiJsL>((json) => JdiJsL.fromJson(json)).toList();
}
var myJdiJsL = parseJdiJsLs(itmLstr);
print(myJdiJsL[0].name); // Sarah
print('');
for (var itm in myJdiJsL){
print('${itm.name} ${itm.age} ${itm.role} ' );
}
print('');
/* output
Sarah 19 Student
Janine 43 Professor
William 27 Associate Professor
Frances 37 Student
Maxine 29 Student
Jennifer 25 Student
Joe 49 Adjunct Professor
*/
myJdiJsL.add(JdiJsL(name: 'Jim', age: 32, role: 'Lab Tech'));
myJdiJsL.add(JdiJsL(name: 'Darcy', age: 21, role: 'Student'));
for (var itm in myJdiJsL){
print('${itm.name} ${itm.age} ${itm.role} ' );
}
print('');
var myJdiJsLjson = jsonEncode(myJdiJsL);
print(myJdiJsLjson);
print('');
// var decoded = JSON.decode('["foo", { "bar": 499 }]');
// var decoded = jsonDecode('["foo", { "bar": 499 }]');
// var deaths6061_PlacerCounty_CA = JSON.decode(
var deaths6061_PlacerCounty_CA = jsonDecode(
'''{
"type":"deaths",
"countyFIPS": 6061,
"county": "Placer County",
"state": "CA",
"fromDate": "2020,08,01",
"thruDate": "2020,08,08",
"valList": [
{"date":"2020,08,01", "value": 15},
{"date":"2020,08,02", "value": 16},
{"date":"2020,08,03", "value": 17},
{"date":"2020,08,04", "value": 18},
{"date":"2020,08,05", "value": 19},
{"date":"2020,08,06", "value": 20},
{"date":"2020,08,07", "value": 20},
{"date":"2020,08,08", "value": 20}
]
}'''
);
print('${deaths6061_PlacerCounty_CA["type"]}');
print('${deaths6061_PlacerCounty_CA["county"]}');
for (var ix in [0,1,2,3,4,5,6,7]){
print('${deaths6061_PlacerCounty_CA["valList"][ix]}');
}
} // main
var itmLstr = '''[
{"name":"Sarah", "age":19, "role":"Student" },
{"name":"Janine", "age":43, "role":"Professor" },
{"name":"William", "age":27, "role":"Associate Professor" },
{"name":"Frances", "age":37, "role":"Student" },
{"name":"Maxine", "age":29, "role":"Student" },
{"name":"Jennifer", "age":25, "role":"Student" },
{"name":"Joe", "age":49, "role":"Adjunct Professor" }
]''';
/// https://javiercbk.github.io/json_to_dart/
/// https://github.com/javiercbk/json_to_dart
class JdiJsL {
String name;
int age;
String role;
JdiJsL({this.name, this.age, this.role});
JdiJsL.fromJson(Map<String, dynamic> json) {
name = json['name'];
age = json['age'];
role = json['role'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = this.name;
data['age'] = this.age;
data['role'] = this.role;
return data;
}
}
/* Console output
String
JSArray<dynamic>
_JsonMap
{name: Sarah, age: 19, role: Student}
Sarah
Sarah 19 Student
Janine 43 Professor
William 27 Associate Professor
Frances 37 Student
Maxine 29 Student
Jennifer 25 Student
Joe 49 Adjunct Professor
Sarah 19 Student
Janine 43 Professor
William 27 Associate Professor
Frances 37 Student
Maxine 29 Student
Jennifer 25 Student
Joe 49 Adjunct Professor
Jim 32 Lab Tech
Darcy 21 Student
[{"name":"Sarah","age":19,"role":"Student"},{"name":"Janine","age":43,"role":"Professor"},{"name":"William","age":27,"role":"Associate Professor"},{"name":"Frances","age":37,"role":"Student"},{"name":"Maxine","age":29,"role":"Student"},{"name":"Jennifer","age":25,"role":"Student"},{"name":"Joe","age":49,"role":"Adjunct Professor"},{"name":"Jim","age":32,"role":"Lab Tech"},{"name":"Darcy","age":21,"role":"Student"}]
deaths
Placer County
{date: 2020,08,01, value: 15}
{date: 2020,08,02, value: 16}
{date: 2020,08,03, value: 17}
{date: 2020,08,04, value: 18}
{date: 2020,08,05, value: 19}
{date: 2020,08,06, value: 20}
{date: 2020,08,07, value: 20}
{date: 2020,08,08, value: 20}
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment