2

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)

質問:

  1. これに対する解決策はありますか?(例: JSON.parse に文字列を作成させる)
  2. これを処理するより良い方法はありますか?(例: JSON 文字列から直接データを抽出)
4

2 に答える 2

1

私があなたに見ているものから、sResponse mAcctData['I_Id']本当にint

{
  "S_Custname": "James Bond",
  "I_Id": 1,
  "I_Acctnr": 123456789,
  "I_AcctBal": 63727272,
  "I_AvailBal": 0
}

Stringしたがって、 forを取得したい場合は、 int.toString()mAcctData['I_Id']を使用できます。

String sId = mAcctData['I_Id'].toString();
于 2013-01-11T07:39:21.370 に答える
0

整数を次のようにしたい場合は、整数を文字列に変換するだけです。

{
    "S_Custname": "James Bond",
    "I_Id": "1",
    "I_Acctnr": "123456789",
    "I_AcctBal": "63727272",
    "I_AvailBal": "0"
}

これで正常に動作するはずです。または、を使用.toString()して整数を文字列に変換します。

于 2013-01-11T07:36:08.883 に答える