Dart は素晴らしいです。プログラミングのようなものです。IDEも素晴らしいです。Dart JSON.parse 関数で (私にとって) 問題と思われるものに遭遇しました。問題は、文字列が整数の場合、マップに整数を作成することです。文字列フィールドに数値が含まれる場合があるため、これは望ましくない場合があります。例えば。番地だけを含む住所。あるいは、単に何か間違ったことをしているのかもしれません。
考えられる問題を明らかにするコード行は次のとおりです。
String sId = mAcctData['I_Id'];
これには論理的な解決策があると思います。もしそうなら、アドバイスをいただければ幸いです
httpSubmitAccountNrLoadEnd(HttpRequest httpReq) {
String sResponse = null;
if (httpReq.status != 200) {
print('On Http Submit Account Nr. There was an error : status = ${httpReq.status}');
} else {
print("On Return from Http Submit Account Nr. no error - status = ${httpReq.status}");
sResponse = httpReq.responseText;
}
print("Response From Submit Account Nr. = ${sResponse}"); // print the received raw JSON text
Map mAcctData = JSON.parse(sResponse);
print ("Json data parsed to map");
print ("Map 'S_Custname' = ${mAcctData['S_Custname']}");
String sCustName = mAcctData['S_Custname'];
print ("About to extract sId from Map data");
String sId = mAcctData['I_Id'];
print ("sId has been extracted from Map data");
String sAcctNr = mAcctData['I_AcctNr'];
String sAcctBal = mAcctData['I_AcctBal'];
以下はコンソール出力です。私が抱えている問題を示す行は次のとおりです。
Exception: type 'int' is not a subtype of type 'String' of 'sId'.
http メッセージを送信しようとしています Http Submit Account Nr. からの戻り時 エラーなし - ステータス = 200 提出アカウント番号からの応答。= {"S_Custname":"James Bond","I_Id":1,"I_Acctnr":123456789,"I_AcctBal":63727272,"I_AvailBal":0} 解析されてマップされる Json データ Map 'S_Custname' = ジェームズ・ボンドマップ データから sId を抽出しようとしています
例外: 型 'int' は 'sId' の型 'String' のサブタイプではありません。
スタック トレース: #0 httpSubmitAccountNrLoadEnd (http://127.0.0.1:3030/C:/Users/Brian/dart/transact01/transact01.dart:75:31)
1 submitAccountNr.submitAccountNr. (http://127.0.0.1:3030/C:/Users/Brian/dart/transact01/transact01.dart:33:59)
例外: 型 'int' は 'sId' の型 'String' のサブタイプではありません。 スタック トレース: #0 httpSubmitAccountNrLoadEnd (http://127.0.0.1:3030/C:/Users/Brian/dart/transact01/transact01.dart:75:31)
1 submitAccountNr.submitAccountNr. (http://127.0.0.1:3030/C:/Users/Brian/dart/transact01/transact01.dart:33:59)
質問:
- これに対する解決策はありますか?(例: JSON.parse に文字列を作成させる)
- これを処理するより良い方法はありますか?(例: JSON 文字列から直接データを抽出)