asp.net-mvc Web サイトがあり、データベースから Json 文字列を読み込んでいます。DB 内の次の json を次に示します。次のようになります。
{"description": "Test", "contacts": ["joe@gmail.com", "bill@yahoo.com"], "enabled": true}
またはこれ:
{"description": "Test", "contacts": "joe@gmail.com, bill@yahoo.com", "enabled": true}
ご覧のとおり、連絡先フィールドは次のいずれかです。
- 文字列 (コンマで区切られた項目を含む)
- 文字列の配列。
このクラスに変換したい:
public class MyJob
{
public string description;
public string[] contacts;
public string enabled;
}
JavascriptSerializer() を使用して、文字列だけに割り当てようとすると (上記をこれに変更します: public string contacts; ):
var serializer = new JavaScriptSerializer();
string contacts = serializer.Deserialize<MyJob>(theAboveJsonString).contacts;
配列の場合にこのエラーが発生します: Type 'System.String' is not supported for deserialization of an array.
次の場合を処理するためにこれを逆シリアル化する最良の方法は何ですか:
- 文字列
- 文字列の配列。
お問い合わせ欄に。必要な条件付きロジックを喜んで配置します。.
私はこれを試しました:
var contacts = serializer.Deserialize<MyJob>(theAboveJsonString).contacts;
if (contacts is string)
{
jobInfo.contacts = contacts;
}
else
{
jobInfo.contacts = String.Join("; ", contacts );
}
しかし、配列の場合に上記のエラーがまだ発生しているため、修正されていないようです