Dart 颤振:如何使用JSON数据生成数组
我想用JSON制作一个数组,但我重复了同一篇文章。 我正在使用WordPress的RESTAPI JSON插件 有关WP REST API的更多信息: 这是我的JSON代码Dart 颤振:如何使用JSON数据生成数组,dart,flutter,Dart,Flutter,我想用JSON制作一个数组,但我重复了同一篇文章。 我正在使用WordPress的RESTAPI JSON插件 有关WP REST API的更多信息: 这是我的JSON代码 [ { "id": 65, "date": "2014-08-24T18:56:26", "date_gmt": "2014-08-24T18:56:26", "guid": { "rendered": "http:\/\/********\/********\/?p=
[
{
"id": 65,
"date": "2014-08-24T18:56:26",
"date_gmt": "2014-08-24T18:56:26",
"guid": {
"rendered": "http:\/\/********\/********\/?p=1"
},
"modified": "2018-06-05T13:24:58",
"modified_gmt": "2018-06-05T13:24:58",
"slug": "this-url-wordpress",
"status": "publish",
"type": "post",
"title": {
"rendered": "\u2018 This a test title 1 \u2019"
},
"content": {
"rendered": "<p>This is a content 1</p>",
"protected": false
},
"excerpt": {
"rendered": "<p>this a excerpt 1...<\/p>\n",
"protected": false
},
"author": 1,
"featured_media": 468,
"comment_status": "open",
"ping_status": "open",
"sticky": false,
"template": "",
"format": "standard",
"meta": [
],
"categories": [
14
],
"tags": [
17,
18
],
},
{
"id": 650,
"date": "2014-08-24T18:56:26",
"date_gmt": "2014-08-24T18:56:26",
"guid": {
"rendered": "http:\/\/********\/********\/?p=1"
},
"modified": "2018-06-05T13:24:58",
"modified_gmt": "2018-06-05T13:24:58",
"slug": "this-url-wordpress",
"status": "publish",
"type": "post",
"title": {
"rendered": "\u2018 This a test title 2 \u2019"
},
"content": {
"rendered": "<p>This is a content 2</p>",
"protected": false
},
"excerpt": {
"rendered": "<p>this a excerpt 2...<\/p>\n",
"protected": false
},
"author": 1,
"featured_media": 468,
"comment_status": "open",
"ping_status": "open",
"sticky": false,
"template": "",
"format": "standard",
"meta": [
],
"categories": [
14
],
"tags": [
17,
18
],
},
{
"id": 230,
"date": "2014-08-24T18:56:26",
"date_gmt": "2014-08-24T18:56:26",
"guid": {
"rendered": "http:\/\/********\/********\/?p=1"
},
"modified": "2018-06-05T13:24:58",
"modified_gmt": "2018-06-05T13:24:58",
"slug": "this-url-wordpress",
"status": "publish",
"type": "post",
"title": {
"rendered": "\u2018 This a test title 3 \u2019"
},
"content": {
"rendered": "<p>This is a content 3</p>",
"protected": false
},
"excerpt": {
"rendered": "<p>this a excerpt 3...<\/p>\n",
"protected": false
},
"author": 1,
"featured_media": 468,
"comment_status": "open",
"ping_status": "open",
"sticky": false,
"template": "",
"format": "standard",
"meta": [
],
"categories": [
14
],
"tags": [
17,
18
],
},
]
[
{
“id”:65,
“日期”:“2014-08-24T18:56:26”,
“日期”:“2014-08-24T18:56:26”,
“guid”:{
“呈现”:“http:\/\/*********\/************\/?p=1”
},
“修改”:“2018-06-05T13:24:58”,
“修改后的gmt”:“2018-06-05T13:24:58”,
“slug”:“此url wordpress”,
“状态”:“发布”,
“类型”:“职位”,
“标题”:{
“呈现”:“\u2018这是测试标题1\u2019”
},
“内容”:{
“呈现”:“这是一个内容1”,
“受保护”:错误
},
“摘录”:{
“呈现”:“这是摘录1…\n”,
“受保护”:错误
},
"作者":1,,
“特色媒体”:468,
“评论状态”:“打开”,
“ping_状态”:“打开”,
“粘性”:假,
“模板”:“,
“格式”:“标准”,
“元”:[
],
“类别”:[
14
],
“标签”:[
17,
18
],
},
{
“id”:650,
“日期”:“2014-08-24T18:56:26”,
“日期”:“2014-08-24T18:56:26”,
“guid”:{
“呈现”:“http:\/\/*********\/************\/?p=1”
},
“修改”:“2018-06-05T13:24:58”,
“修改后的gmt”:“2018-06-05T13:24:58”,
“slug”:“此url wordpress”,
“状态”:“发布”,
“类型”:“职位”,
“标题”:{
“呈现”:“\u2018这是测试标题2\u2019”
},
“内容”:{
“呈现”:“这是内容2”,
“受保护”:错误
},
“摘录”:{
“呈现”:“这是摘录2…\n”,
“受保护”:错误
},
"作者":1,,
“特色媒体”:468,
“评论状态”:“打开”,
“ping_状态”:“打开”,
“粘性”:假,
“模板”:“,
“格式”:“标准”,
“元”:[
],
“类别”:[
14
],
“标签”:[
17,
18
],
},
{
“id”:230,
“日期”:“2014-08-24T18:56:26”,
“日期”:“2014-08-24T18:56:26”,
“guid”:{
“呈现”:“http:\/\/*********\/************\/?p=1”
},
“修改”:“2018-06-05T13:24:58”,
“修改后的gmt”:“2018-06-05T13:24:58”,
“slug”:“此url wordpress”,
“状态”:“发布”,
“类型”:“职位”,
“标题”:{
“呈现”:“\u2018这是测试标题3\u2019”
},
“内容”:{
“呈现”:“这是一个内容3”,
“受保护”:错误
},
“摘录”:{
“呈现”:“这是摘录3…\n”,
“受保护”:错误
},
"作者":1,,
“特色媒体”:468,
“评论状态”:“打开”,
“ping_状态”:“打开”,
“粘性”:假,
“模板”:“,
“格式”:“标准”,
“元”:[
],
“类别”:[
14
],
“标签”:[
17,
18
],
},
]
我的代码:
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:peluqueriafran/WebView.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;
Future<Post> fetchPost() async {
final response =
await http.get('http://**********:88/WordPress/wp-json/wp/v2/posts/');
final responseJson = json.decode(response.body);
return new Post.fromJson(responseJson);
}
class Post {
final int id;
final String title;
final String body;
final String urlimagen;
final String linkWeb;
Post({this.id, this.title, this.body, this.urlimagen, this.linkWeb});
factory Post.fromJson(Map<String, dynamic> json) {
return new Post(
title: json['title']['rendered'].toString(),
);
}
}
导入'dart:async';
进口“包装:颤振/材料.省道”;
导入“package:peluqueriafran/WebView.dart”;
导入“dart:convert”;
将“package:http/http.dart”导入为http;
Future fetchPost()异步{
最后答复=
等待http.get('http://********:88/WordPress/wp-json/wp/v2/posts/');
final responseJson=json.decode(response.body);
返回新的Post.fromJson(responseJson);
}
班岗{
最终int id;
最后的字符串标题;
最终管柱体;
最终字符串urlimagen;
最终字符串链接Web;
Post({this.id,this.title,this.body,this.urlimagen,this.linkWeb});
factory Post.fromJson(映射json){
换岗(
title:json['title']['rendered'].toString(),
);
}
}
WEB:
应用程序:-最后生成的已选中,我想获取所有帖子。
我希望有人能帮我,谢谢
您可以更改
fetchPost
以返回帖子列表,如:
Future<List<Post>> fetchPosts() async {
http.Response response =
await http.get('http://**********:88/WordPress/wp-json/wp/v2/posts/');
List responseJson = json.decode(response.body);
return responseJson.map((m) => new Post.fromJson(m)).toList();
}
Future fetchPosts()异步{
响应=
等待http.get('http://********:88/WordPress/wp-json/wp/v2/posts/');
List responseJson=json.decode(response.body);
return responseJson.map((m)=>new Post.fromJson(m)).toList();
}
然后您可以像这样利用未来
:
@override
Widget build(BuildContext context) {
return new FutureBuilder<List<Post>>(
future: fetchPosts(),
builder: (context, snapshot) {
if (!snapshot.hasData) return Container();
List<Post> posts = snapshot.data;
return new ListView(
children: posts.map((post) => Text(post.title)).toList(),
);
},
);
}
@覆盖
小部件构建(构建上下文){
返回新的FutureBuilder(
future:fetchPosts(),
生成器:(上下文,快照){
如果(!snapshot.hasData)返回容器();
List posts=snapshot.data;
返回新的ListView(
子项:posts.map((post)=>Text(post.title)).toList(),
);
},
);
}
ListView
获取子项列表,就像列
等一样。因此,您可以使用包含子项列表的任何小部件{
{
"key": "message",
"texts": [
{
"lan": "en",
"text": "You have pushed this button many times"
},
{
"lan": "tr",
"text": "Bu butona bir çok kez bastınız"
},
{
"lan": "ru",
"text": "Вы много раз нажимали кнопку"
}
]
}
class Lang {
final String key;
final List<dynamic> texts;
Lang(this.key, this.texts);
Lang.fromJson(Map<String, dynamic> json)
: key = json['key'],
texts = json['texts'];
Map<String, dynamic> toJson() => {
'key': key,
'texts': texts,
};
}
class Texts {
final String lan;
final String text;
Texts(this.lan, this.text);
Texts.fromJson(Map<String, dynamic> json)
: lan = json['lan'],
text = json['text'];
Map<String, dynamic> toJson() => {
'lan': lan,
'text': text,
};
}
Map<String, dynamic> languages = json.decode(jsonCrossword);
var user = new Lang.fromJson(languages);
“密钥”:“消息”,
“案文”:[
{
“lan”:“en”,
“文本”:“您已多次按下此按钮”
},
{
“lan”:“tr”,
“文本”:“Bu butona birçok kez bastınız”
},
{
“兰”:“如”,
“正文”:“а
}
]
}
朗班{
最后的字符串键;
最后清单文本;
Lang(this.key,this.text);
Lang.fromJson(映射json)
:key=json['key'],
text=json['text'];
映射到JSON()=>{
“键”:键,
“文本”:文本,
};
}
课文{
最后串局域网;
最终字符串文本;
文本(this.lan,this.text);
text.fromJson(映射json)
:lan=json['lan'],
text=json['text'];
映射到JSON()=>{
"兰":兰,,
“文本”:文本,
};
}
Map languages=json.decode(jsonCrossword);
var user=new Lang.fromJson(语言);
如果你需要它,我会给你我的类Añadíyél骰子:El'título'Getter no estádefinido para la clase'Lista'Mira la imagen:你现在有了一个帖子列表,所以你必须把它变成一个小部件列表<代码>快照。数据现在是一个列表