- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我目前有一个通过 JSON 提取提供者列表的应用。
这是 JSON 文件。
hospitals.json
{
"Johor": [
{
"Name": "KLINIK TAJ (MUAR)",
"TPA Customer ID": "1168",
"Organization Type": "Clinic",
"Organization Subtype": "GP",
"Street (Billing)": "35a, jalan abdullah ",
"City (Billing)": "muar",
"Postal Code (Billing)": "84000",
"State (Billing)": "Johor",
"Country (Billing)": "Malaysia",
"Coordinates": {
"Latitude": "2.041875",
"Longitude": "102.568235"
}
},
{
"Name": "KLINIK TAJ (PAGOH)",
"TPA Customer ID": "1169",
"Organization Type": "Clinic",
"Organization Subtype": "GP",
"Street (Billing)": "100 Main Road Pagoh",
"City (Billing)": "Muar",
"Postal Code (Billing)": "84600",
"State (Billing)": "Johor",
"Country (Billing)": "Malaysia",
"Coordinates": {
"Latitude": "2.148342",
"Longitude": "102.771002"
}
}
],
"Kedah": [
{
"Name": "KLINIK TAN",
"TPA Customer ID": "8423",
"Organization Type": "Clinic",
"Organization Subtype": "GP",
"Street (Billing)": "62 Jalan Raya",
"City (Billing)": "Kulim",
"Postal Code (Billing)": "9000",
"State (Billing)": "Kedah",
"Coordinates": {
"Latitude": "5.366739",
"Longitude": "100.553988"
}
},
{
"Name": "KLINIK SHAN",
"TPA Customer ID": "1685",
"Organization Type": "Clinic",
"Organization Subtype": "GP",
"Street (Billing)": "L. C. 19, Jalan Lunas,",
"City (Billing)": "Padang Serai",
"Postal Code (Billing)": "9000",
"State (Billing)": "Kedah",
"Coordinates": {
"Latitude": "5.402193",
"Longitude": "100.555209"
}
}
]
}
这是 JSON 的模型类
new_accounts_model.dart
class Johor {
List<AccountInfo> accountinfo;
Johor({this.accountinfo});
factory Johor.fromJson(Map<String, dynamic> json){
var accJson = json["Johor"] as List;
List<AccountInfo> accList = accJson.map((i) => AccountInfo.fromJson(i)).toList();
return Johor(
accountinfo: accList
);
}
}
class AccountInfo{
String name;
String id;
String orgtype;
String subtype;
String street;
String city;
String country;
Coordinates coordinates;
AccountInfo({this.name, this.id, this.orgtype, this.subtype, this.street, this.city, this.country, this.coordinates});
factory AccountInfo.fromJson(Map<String, dynamic> json){
return AccountInfo(
name: json["Name"],
id: json["TPA Customer ID"],
orgtype: json["Organization Type"],
subtype: json["Organization Subtype"],
street: json["Street (Billing)"],
city: json["City (Billing)"],
country: json["State (Billing)"],
coordinates: Coordinates.fromJson(json["Coordinate"])
);
}
}
class Coordinates{
String lat;
String lng;
Coordinates({this.lat, this.lng});
factory Coordinates.fromJson(Map<String, dynamic> json){
return Coordinates(
lat: json["Latitude"],
lng: json["Longitude"]
);
}
}
这是用于导出 JSON 文件的 dart 文件。
list.dart
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
import 'dart:async' show Future;
import 'package:flutter/services.dart' show rootBundle;
import 'dart:convert';
import 'package:emas_app/model/new_accounts_model.dart';
Future<String> _loadAsset() async{
return await rootBundle.loadString('Assets/hospitals.json');
}
//Not working future
Future<Johor> loadJohor() async{
final response = await _loadAsset();
final jsonResponse = json.decode(response);
Johor johor = new Johor.fromJson(jsonResponse);
return johor;
}
class ProviderList extends StatefulWidget {
@override
ListState createState() {
return new ListState();
}
}
class ListState extends State<ProviderList> {
@override
Widget build(BuildContext context) {
List<Widget> widgets = [];
launchMapUrl(String lat, String lng) async{
String geoUri = "https://maps.google.com/maps?q=loc:$lat,$lng";
if (await canLaunch(geoUri)) {
print("Can launch");
await launch(geoUri);
} else {
print("Could not launch");
throw 'Could not launch Maps';
}
}
//method to bring out dialog
makeDialog(String address){
showDialog(
context: context,
builder: (_) => new SimpleDialog(
contentPadding: EdgeInsets.only(left: 30.0, top: 30.0),
children: <Widget>[
new Text("Address: $address",
style: TextStyle(
fontWeight: FontWeight.bold
),
),
new ButtonBar(
children: <Widget>[
new IconButton(
icon: Icon(Icons.close),
onPressed: (){
Navigator.pop(context);
}
)
],
)
],
)
);
}
widgets.add(new ExpansionTile(
title: new Text("Not working state"),
children: <Widget>[
new FutureBuilder<Johor>(
future: loadJohor(),
builder: (context, snapshot){
if(snapshot.hasData){
return new ListView.builder(
shrinkWrap: true,
itemCount: snapshot.data.accountinfo.length,
itemBuilder: (context, index){
String username = snapshot.data.accountinfo[index].name;
String address = snapshot.data.accountinfo[index].street;
String lat = snapshot.data.accountinfo[index].coordinates.lat;
String lng = snapshot.data.accountinfo[index].coordinates.lng;
return new ListTile(
title: new Text(username),
trailing: new Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
new IconButton(
icon: Icon(Icons.info),
onPressed: (){
makeDialog(address);
}
),
new IconButton(
icon: Icon(Icons.directions),
onPressed: (){
launchMapUrl(lat, lng);
}
)
],
)
);
});
}else if(snapshot.hasError){
return new Center(
child: new Text(snapshot.error),
);
}
})
]
));
//empty list
widgets.add(new ExpansionTile(
title: new Text("Pahang")));
return new Scaffold(
appBar: new AppBar(title: new Text("Providers")),
body: new Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: widgets,
)
);
}
}
这是当前面临的错误:
正如标题所说,错误是 NoSuchMethodError。因此,我不确定首先导致此错误的原因。
我目前的猜测是我没有正确执行 Model 类,但它可能是其他问题。
在这种情况下,我真的需要一些帮助。
最佳答案
您为 Coordinates
使用了错误的键。您应该使用 Coordinates
作为它在 json 中的键名。但是您在方法 factory AccountInfo.fromJson
更新该方法的最后一行
coordinates: Coordinates.fromJson(json["Coordinates"])
关于dart - Flutter: 'NoSuchMethodError' 不是 String 类型的子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52310940/
我正在用来自JSON文件的一些数据填充Flutter中的列表。 但是,我的代码不断抛出异常"NoSuchMethodError (NoSuchMethodError: The method 'add'
通过eclipse运行Tomcat 7报错是: javax.servlet.ServletException: java.lang.NoSuchMethodError: org.eclipse.jdt
这是我的错误行: 这是我的代码: 最佳答案 final jobs= json.decode(response.body)['name_database_table']; 关于mobile - NoSu
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。为了帮助澄清这个问题以便可以重新打开它,visit the help center
我已经被这个错误困扰了几个小时。。我的pom.xml。应用程序未启动。所有的Spring框架依赖于相同的版本,但仍然得到相同的错误。。更新。MVN依赖的结果:树。看起来这里一切都很好。
我得到: NoSuchMethodError: com.foo.SomeService.doSmth()Z 我是否正确理解这个'Z'意味着doSmth()方法的返回类型是 boolean 值?如果为
我在 Speed 类中引用 PlayerUtil.getMovementSpeed(player);,在我的 PlayerUtil 类中,我将方法定义为: public static double g
我得到: NoSuchMethodError: com.foo.SomeService.doSmth()Z 我是否正确理解这个 'Z' 意味着 doSmth() 方法的返回类型是 boolean 值?
我在使用 Spark 和 Scala 时遇到了一个奇怪的错误。我有一段代码声明了一个变量: var offset = 0 这会导致以下异常: java.lang.NoSuchMethodError:
我已经成功实现了 reflectionEquals 方法,其中包含一个排除字段列表。 return EqualsBuilder.reflectionEquals(this, obj, new Str
我正在使用 Spring 框架和 Maven 开发 Java Enterprise 应用程序。我正在为此学习一门类(class),并且一直坚持集成 Hibernate JPA。当我运行项目时,它返回以
I/flutter ( 8282): The following NoSuchMethodError was thrown building Meme(dirty, state: _MemeState
运行以下代码时出现 NoSuchMethodError - 我想从 JSON url 打印出轨道标题 - 我错过了什么吗? import 'dart:async'; import 'dart:conv
我正在做 Searchview flutter 中的例子 https://github.com/MageshPandian20/Flutter-SearchView 但我想对 进行更改子项类有一个 最
尝试从Eclipse中的简单Java程序连接到Hive时出现以下错误。看起来好像连接,然后引发此错误。我可以通过beeline在本地连接到Hive Thrift服务器,而不会出现问题。 两个libth
当我向安全资源发出请求时,会发生NoSuchMethodError。 基于基于Spring Boot 1.4.4的Grails 3.2.5的项目 AppConfig: @EnableWebSecuri
这个问题已经有答案了: Differences between Exception and Error (11 个回答) 已关闭 7 年前。 我的印象是 Exception 非常适合捕获所有可能的异常
祝大家有美好的一天!我使用 google Vision API,当我在 IntelliJ Idea 中运行我的程序时,它工作得很好,但是当我编译 jar 文件时,它在处理照片时给出错误 java.la
我一直在为这个问题苦苦挣扎。我正在开发一个包含很多包的 netbeans java 项目,起初我更改了 gui,但是当我运行代码时,它没有反射(reflect)任何更改,即使我在保存、清理、清理和编译
我一直在寻找问题的解决方案,但没有得到足够的答案。 我正在开发 Bukkit插件的更新系统。因此,我必须自己编写这些类的代码。但我一直想从 debug(String) 调用一个方法(具体来说: ano
我是一名优秀的程序员,十分优秀!