0
私はタイプJsonObject
のオブジェクトをシリアル化するとき、私はDataObject
1レベル上を移動することができますどのように次のような出力C#を使用してJSON.netのJSONオブジェクトの深さを1レベル上に移動する方法は?
{"DataObject":{"id":"1","name":"data name"}}
を取得JSON.net
を使用して、クラスのためのコンバータを記述しようとしています次の出力を取得します。
{"id":"1","name":"data name"}
以下の関連するコードを見つけることができます。
私のクラスの形式は次のとおりです。私は、ドキュメントからthis pageを参照して、次のコンバータ書い
public class MyDataObject : IDataObject
{
[JsonProperty(PropertyName = "id", Required = Required.Always)]
public string Id { get; set; }
[JsonProperty(PropertyName = "name", Required = Required.Always)]
public string Name { get; set; }
}
:
public class JsonDataObjectConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return typeof(IDataObject).GetTypeInfo().IsAssignableFrom(objectType.GetTypeInfo());
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
if (value is MyDataObject dataObject)
{
writer.WriteStartObject();
writer.WritePropertyName("id");
writer.WriteValue(dataObject.Id);
writer.WritePropertyName("name");
writer.WriteValue(dataObject.Name);
writer.WriteEndObject();
}
}
}
を
public class JsonObject
{
public JsonObject(IDataObject dataObject)
{
this.DataObject= dataObject;
}
[JsonConverter(typeof(JsonDataObjectConverter))]
public IDataObject DataObject;
}
DataObject
は、いくつかのプロパティを持っていますどんな助けもありがとうございます。ありがとうございました。
私はあなたの方法を見ることができます:
これは、所望の出力を提供しますレベルを取得していますが、なぜそれを削除したいのですか?それは –
JSONが送信されるアプリケーションは、余分なレベルがないと予想します。 –
これを見てくださいhttps://stackoverflow.com/questions/34007512/webapi-return-json-array-without-root-node –