android端,如何防止服务器json数据变化导致的异常,比如忽然多一个或者少一个字段,字符串类型变成一个对象类型等等?
これについてはインターフェースのドキュメントに従ってください。これを自由に変更することはできません。変更したい場合は、必要に応じて変更してください。
これはサーバーと合意する必要があり、簡単に変更しないでください。変更する必要がある場合は、gson を使用して解析するエンティティ クラスを作成すると、追加されたフィールドがプログラムに影響を与えず、必要に応じて簡単に変更できます。データ解析は、変更されていないフィールドを解析する方法と、変更される可能性のあるフィールドを解析する方法の 2 つのメソッドを記述して実行することもできます。この方法では、たとえ変更があったとしても、通常の動作には影響しません。変更されたフィールドを取得できません
私たちは例外を処理しただけです。サーバーは例外を返し、ルート レイアウトを削除し、プロンプトを表示しました。正式な環境には、クラッシュを引き起こしやすい json 形式の変更などの問題があってはなりません。もちろん、このような状況が発生した場合は、initData 中に値を 1 つずつチェックするメソッドを追加します。巧妙な方法があるとは予想していませんでした...
Gson を使用します。フィールドが 1 つ増えても 1 つ減っても、ほとんどのフィールドは null です。レイアウト上で空ではない判断をもっと行うだけです。一般に、バックグラウンドフィールドの変更はフロントエンドに通知される必要があります
通常、すべての可能なフィールドが Bean に書き込まれ、初期値が与えられます。 フィールドの型が不明な場合は、Object と List<Object> を使用して、型を決定します。 さらに誇張されたものにも遭遇しました。List の要素にはさまざまな型があります。そのときは List<?>
同僚が背景にランダムな変更を加えたことを上司に報告してください。
- この種の問題を解決するのは無意味です。人工的な愚かさに対処するために追加のコードを作成することになります。
このような問題は、チームのコミュニケーション中に解決する必要があります。コミュニケーションで解決すべきことをテクノロジーで解決しない 頭痛の治療と同じです。
1. 問題の根本原因を見つける。サーバーによって任意に変更されたのか、それとも最初に指定されたオブジェクト フィールドが明確に記述されていないのか。2. これはサーバーの契約上の性質に関係するため、変更する必要があります。サーバーが契約上の性質に違反している場合は、リーダーを直接見つけてサーバーとの調整を依頼できます
どのインターフェイスがどのフィールドとタイプを返すかについて、バックエンドと明確に通信します。変更があった場合は忘れずに通知してください。
これについてはインターフェースのドキュメントに従ってください。これを自由に変更することはできません。変更したい場合は、必要に応じて変更してください。
これはサーバーと合意する必要があり、簡単に変更しないでください。変更する必要がある場合は、gson を使用して解析するエンティティ クラスを作成すると、追加されたフィールドがプログラムに影響を与えず、必要に応じて簡単に変更できます。データ解析は、変更されていないフィールドを解析する方法と、変更される可能性のあるフィールドを解析する方法の 2 つのメソッドを記述して実行することもできます。この方法では、たとえ変更があったとしても、通常の動作には影響しません。変更されたフィールドを取得できません
私たちは例外を処理しただけです。サーバーは例外を返し、ルート レイアウトを削除し、プロンプトを表示しました。正式な環境には、クラッシュを引き起こしやすい json 形式の変更などの問題があってはなりません。もちろん、このような状況が発生した場合は、initData 中に値を 1 つずつチェックするメソッドを追加します。巧妙な方法があるとは予想していませんでした...
Gson を使用します。フィールドが 1 つ増えても 1 つ減っても、ほとんどのフィールドは null です。レイアウト上で空ではない判断をもっと行うだけです。一般に、バックグラウンドフィールドの変更はフロントエンドに通知される必要があります
通常、すべての可能なフィールドが Bean に書き込まれ、初期値が与えられます。
を使用しました。フィールドの型が不明な場合は、Object と List<Object> を使用して、型を決定します。
さらに誇張されたものにも遭遇しました。List の要素にはさまざまな型があります。そのときは List<?>
同僚が背景にランダムな変更を加えたことを上司に報告してください。
- この種の問題を解決するのは無意味です。人工的な愚かさに対処するために追加のコードを作成することになります。
このような問題は、チームのコミュニケーション中に解決する必要があります。コミュニケーションで解決すべきことをテクノロジーで解決しない 頭痛の治療と同じです。
1. 問題の根本原因を見つける。サーバーによって任意に変更されたのか、それとも最初に指定されたオブジェクト フィールドが明確に記述されていないのか。
2. これはサーバーの契約上の性質に関係するため、変更する必要があります。サーバーが契約上の性質に違反している場合は、リーダーを直接見つけてサーバーとの調整を依頼できます
どのインターフェイスがどのフィールドとタイプを返すかについて、バックエンドと明確に通信します。変更があった場合は忘れずに通知してください。