iOS:「JSON書き込みで無効なトップレベルタイプ」により、プログラムがフラッシュバックします



Ios Invalid Top Level Type Json Writecauses Program Flash Back



午後には、開発の新機能をテストします。デモをテストすると、投稿ページを担当していることがわかりました。関連商品が追加されていない場合、投稿プロセスはフラッシュバックされます。会議の後、私はバグのデバッグを開始し、理由を見つけました。グローバルブレークポイントは、プログラムのフラッシュバックの原因となったコードを簡単に見つけることができます。それは辞書を文字列に変換する方法であることが判明しました。

/ / Dictionary converted to Json string + (NSString *)convertDictionaryToJsonString:(NSDictionary *)dic { NSError *error = nil NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error] return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding] } Copy code

エラーログは次のとおりです。 [NSJSONSerialization dataWithJSONObject:options:error:]:JSON書き込みの最上位タイプが無効です



エラーの原因は、関連する項目が追加されていないときに呼び出されることです。convertDictionaryToJsonStringメソッドが渡されると、引数は空の文字列であり、その文字列は辞書として使用されます。 文字列をjson形式に変換できません 、したがって、コードは次のように実行されますNSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error]ステートメントが発行されると、アプリケーションがフラッシュバックします。

このバグの理由は、バックグラウンドインターフェイスによって返されるデータが変更されたためです。同僚が私に言わずにコードを変更してくれました。まあ、何も言いたくない。 。 。このバグとの最初の遭遇を記録します。