没有键/值文本的POSTJSON字典我有一个这样的WCF端点:ResponseFormat=WebMessageFormat.Json,UriTemplate="")]StreamDoWork(Dictionaryitems);为了将任何内容传递给我的服务,我必须像这样构造我的JSON:{"items":[{"Key":"random1","Value":"value1"},{"Key":"random2","Value":"value2"}]}我真的希望它看起来像这样:{"items":{"random1":"value1","random2":"value2"}}有没有办法实现这个?是否可以将DoWork参数更改为字符串,然后在方法中使用Json反序列化器将其转换为正确的格式?我一直在寻找相同的解决方案。我设法通过使用“JavaScriptSerializer”来实现它。您必须将函数输出设置为“Stream”而不是“String”。PublicFunctionhotel_availability(ByValdata1AsStream)AsStreamImplementsIMyTestAPI.hotel_availability....Dimserializer作为新的JavaScriptSerializer()DimserializedResult=serializer.Serialize(a_response)Dimjson=Encoding.UTF8.GetBytesResultaDisialize(serializeMemoryStream(json))WebOperationContext.Current.OutgoingResponse.ContentType="application/json;charset=utf-8"returna_result你基本上需要一个SerializableDynamic对象,所以你的方法看起来像这样:[OperationContract][WebInvoke(...)]StreamDoWork(SerializableDynamicObject项目);您可以在此处查看有关如何从字典构建SerializableDynamic对象的良好指南:(请参阅解决方案部分)。希望这会有所帮助......您可能会使用NewtonsoftJSON序列化程序取得更好的成功。它可用在http://www.newtonsoft.com/json免费或作为NuGet包。我发现它比普通的JSON序列化程序更灵活。另外,看起来你的URITemplate是空的。我没有使用包裹的主体样式,但在裸体样式中,您需要填充URITemplate。以上就是C#学习教程:POSTJSON字典无键/值文本的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
