Json.Net を使用して、次のフラグメントを変換して配列メンバーを平坦化することは可能ですか?
{
"format": "json",
"artist": "artist1",
"description": [
"description1",
"description2"
]
}
このような :
{
"format": "json",
"artist": "artist1",
"description": "description1",
"description": "description2",
}
つまり、オブジェクトは辞書のように見えますが、重複キーが許可されています。
次のようなカスタム JsonConverter を使用しようとしました:
internal class MyConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var strings = (string[])value;
foreach (var s in strings)
{
writer.WritePropertyName(writer.Path);
writer.WriteValue(s);
}
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(string[]);
}
}
しかし、プロパティの名前を書き込むときに JsonWriterException が発生します。
状態 Property のトークン PropertyName は、無効な JSON オブジェクトになります。道 ''。
後で逆シリアル化する予定がないので、このような無効なオブジェクトを作成しても問題ありません。実際には、次の形式で URL パラメータ文字列を作成するために必要です。
format=json&artist=artist1&description=description1&description=description2
これを達成するためにJson.Netインフラストラクチャを使用しようとする価値はありますか?