私は気象データを処理するためにRCPクライアントで作業していました。私のRCPクライアントがオブジェクトの深いコピーを返していない
2つのことは、まずJSONをスクラップして使用し、ダーツファイルに入れます。参照:https://dartpad.dartlang.org/a9c1fe8ce34c608eaa28
マイserver.dartページを、気象データをインポートし、次を行います:
import "dart:io";
import "weather_data.dart";
import "dart:convert";
import "package:rpc/rpc.dart";
find ApiServer _apiServer = new ApiServer(prettyPrint:true);
main() async {
Weather w = new Weather(WeatherJson);
TestServer ts = new TestServer(w);
_apiServer.addApi(ts);
HttpServer server = await HttperServer.bind(InternetAddress.ANY_IP_V4, 12345);
server.listen(_apiServer.httpRequestHandler);
}
class Weather{
Map weather;
Weather(this.weather){
Map get daily => weather["daily"];
}
}
@ApiClass(name:"test_server", version: 'v1', description: 'This is a test server api to ping for some quick sample data.')
class TestServer {
Weather myWeather;
TestServer(this.myWeather){
}
@ApiMethod(method:'GET', path: 'daily')
Map<String, Object> getDaily(){
return myWeather.daily;
}
}
ので、サーバーは正常に起動し、私はlocalhost:12345/test_server/v1/daily
に行くだろうし、それが返されますこれは:
{
"summary": {},
"icon": {},
"data": {}
}
が正しくありません。 JSONデータを検索すると、要約とアイコンは両方とも文字列であり、データは配列です。それらは空でもあり、私が戻したいデータが入っているはずです。
これはなぜ発生するのですか?それは私がMap<String, Object>
を返すからですか?私はそれを設定しようとしていた:Map<String, dynamic>
しかし、ダーツコンパイラはそれを好きではなかった。
このデータで正しいデータセットを返すにはどうすればよいですか?
RPCのDart Webサイトはhttps://github.com/dart-lang/rpc にあります。メソッドの戻り値は、クラスのインスタンスか未来のどちらかのメソッドであることがわかります。それはいつものように意味があるので、私はそれをMap<String,Object>
に設定しましたが、それについてあいまいにしようとしましたが、Map
では十分ではありませんでした。
編集:RPCせず、主にダートパッドでこれを行う場合は
、のサンプルで、正常に動作するようです:https://dartpad.dartlang.org/3f6dc5779617ed427b75
これは何かが解析ツールを使用して間違っていると信じて私をリードダーツパッドの戻り値の型は、Map
、Map<String, Object>
、およびMap<String, dynamic>
を返すことができます。
class ResourceMessage {
int id;
String name;
int capacity;
}
:
ダウンボートの理由が好きですか?私はこれが堅実なコードの例でよく考えられた質問であると信じています。 – Fallenreaper
あまり心配しないでください。誰かがコメントを残さずに改善しなければならないものは、無視することをお勧めします。私はRPCを使用していないので、問題が何であるか分かりません。 –