如何在Flutter中解码JSON?
问题很简单,但答案不是,至少对我而言.
我有一个使用大量JSON字符串的项目.基本上,应用程序和服务器之间的整个通信都是通过JSON进行的.
我一直在使用JSON.decode(json_string)它来处理它,但今天我更新了Flutter核心(0.5.8-pre.178)并且JSON.decode不再可用.
我去了Flutter Docs寻求帮助,但它仍然说要使用JSON.decode.
那么,从现在开始如何在Flutter中解码JSON?
Sur*_*gch 29
您将需要导入dart:convert:
import 'dart:convert';
Run Code Online (Sandbox Code Playgroud)
String rawJson = '{"name":"Mary","age":30}';
Map<String, dynamic> map = jsonDecode(rawJson); // import 'dart:convert';
String name = map['name'];
int age = map['age'];
Person person = Person(name, age);
Run Code Online (Sandbox Code Playgroud)
注意:在服务器端Dart的VS Code中执行此操作时,必须指定类型:
Map<String, dynamic> map = jsonDecode(rawJson) as Map<String, dynamic>;
Run Code Online (Sandbox Code Playgroud)
模型类包含地图转换逻辑:
class Person {
String name;
int age;
Person(this.name, this.age);
// named constructor
Person.fromJson(Map<String, dynamic> json)
: name = json['name'],
age = json['age'];
// method
Map<String, dynamic> toJson() {
return {
'name': name,
'age': age,
};
}
}
Run Code Online (Sandbox Code Playgroud)
JSON转换是这样完成的:
String rawJson = '{"name":"Mary","age":30}';
Map<String, dynamic> map = jsonDecode(rawJson);
Person person = Person.fromJson(map);
Run Code Online (Sandbox Code Playgroud)
在这里查看我的完整答案。
编写序列化代码时很容易出错,因此通常建议Dart团队使用json_serializable软件包。但是,您可以在此处了解不同方法的优缺点。
如果需要更多选项,还可以签出built_value软件包。
Gün*_*uer 26
只是用
json.decode()
Run Code Online (Sandbox Code Playgroud)
要么
jsonDecode()
Run Code Online (Sandbox Code Playgroud)
在Dart 2中,所有尖叫案例常数都改为低骆驼案.
San*_*inh 12
你需要使用 import 'dart:convert';
解码:
JsonDecoder().convert("$response");编码:
JsonEncoder().convert(object)
小智 6
对于这样的 Json 解码
{
"id":"xx888as88",
"timestamp":"2020-08-18 12:05:40",
"sensors":[
{
"name":"Gyroscope",
"values":[
{
"type":"X",
"value":-3.752716,
"unit":"r/s"
},
{
"type":"Y",
"value":1.369709,
"unit":"r/s"
},
{
"type":"Z",
"value":-13.085,
"unit":"r/s"
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我这样做:
void setReceivedText(String text) {
Map<String, dynamic> jsonInput = jsonDecode(text);
_receivedText = 'ID: ' + jsonInput['id'] + '\n';
_receivedText += 'Date: ' +jsonInput['timestamp']+ '\n';
_receivedText += 'Device: ' +jsonInput['sensors'][0]['name'] + '\n';
_receivedText += 'Type: ' +jsonInput['sensors'][0]['values'][0]['type'] + '\n';
_receivedText += 'Value: ' +jsonInput['sensors'][0]['values'][0]['value'].toString() + '\n';
_receivedText += 'Type: ' +jsonInput['sensors'][0]['values'][1]['type'] + '\n';
_receivedText += 'Value: ' +jsonInput['sensors'][0]['values'][1]['value'].toString() + '\n';
_receivedText += 'Type: ' +jsonInput['sensors'][0]['values'][2]['type'] + '\n';
_receivedText += 'Value: ' +jsonInput['sensors'][0]['values'][2]['value'].toString();
_historyText = '\n' + _receivedText;
}
Run Code Online (Sandbox Code Playgroud)
我是 Flutter 新手,所以现在就为我工作
| 归档时间: |
|
| 查看次数: |
14129 次 |
| 最近记录: |