我正在使用OpenRasta为我的.NET应用程序提供一个应用程序接口。
我对它在使用Dictionaries时生成的JSON格式有一个问题。
我有以下配置:
ResourceSpace.Has.ResourcesOfType<Dictionary<String,String>>()
.AtUri("/test")
.HandledBy<ProductHandler>()
.AsXmlDataContract()
.And.AsJsonDataContract();ProductHandler返回以下字典:
Dictionary<String, String> dict = new Dictionary<string, string>();
dict.Add("foo1", "bar1");
dict.Add("foo2", "bar2");
dict.Add("foo3", "bar3");我想要以下JSON:
{
"foo1": "bar1",
"foo2": "bar2",
"foo3": "bar3"
}但我得到的结果如下:
[
{
"Key": "foo1",
"Value": "bar1"
},
{
"Key": "foo2",
"Value": "bar2"
},
{
"Key": "foo3",
"Value": "bar3"
}
]有什么建议如何解决这个问题吗?
发布于 2012-07-29 11:15:32
我最终使用Newtonsoft.Json库进行序列化,它提供了我想要的格式。
编解码器的代码是:
[MediaType("application/json;q=0.3", "json")]
[MediaType("text/html;q=0.3", "html")]
public class NewtonsoftJsonCodec : IMediaTypeReader, IMediaTypeWriter
{
public object Configuration { get; set; }
public object ReadFrom(IHttpEntity request, IType destinationType, string destinationName)
{
using (var streamReader = new StreamReader(request.Stream))
{
var ser = new JsonSerializer();
return ser.Deserialize(streamReader, destinationType.StaticType);
}
}
public void WriteTo(object entity, IHttpEntity response, string[] parameters)
{
if (entity == null)
return;
using (var textWriter = new StreamWriter(response.Stream))
{
var serializer = new JsonSerializer();
serializer.NullValueHandling = NullValueHandling.Include;
serializer.Serialize(textWriter, entity);
}
}
}配置如下所示:
ResourceSpace.Uses.UriDecorator<ContentTypeExtensionUriDecorator>();
ResourceSpace.Has.ResourcesOfType<MeasurementDataFile[]>()
.AtUri("/test")
.HandledBy<MeasurementHandler>()
.TranscodedBy<NewtonsoftJsonCodec>()
.And.AsXmlDataContract();发布于 2012-07-27 21:00:56
看一下JsonDictionary,
JsonDictionary items = new JsonDictionary();
Items.Add("someName1", "someValue1");
Items.Add("someName2", "someValue2");序列化后,它会显示为
{"someName1":"someValue1","someName2":"someValue2"}https://stackoverflow.com/questions/11532507
复制相似问题