Generics 如何将DataContractJsonSerializer与泛型一起使用
我在上找到了这个示例,它在传递类型时将字符串反序列化为JSON,反之亦然Generics 如何将DataContractJsonSerializer与泛型一起使用,generics,asp.net-core,f#,deserialization,json-deserialization,Generics,Asp.net Core,F#,Deserialization,Json Deserialization,我在上找到了这个示例,它在传递类型时将字符串反序列化为JSON,反之亦然 /// Object to Json let internal json<'t> (myObj:'t) = use ms = new MemoryStream() (new DataContractJsonSerializer(typeof<'t>)).WriteObject(ms, myObj) Encoding.Default.GetS
/// Object to Json
let internal json<'t> (myObj:'t) =
use ms = new MemoryStream()
(new DataContractJsonSerializer(typeof<'t>)).WriteObject(ms, myObj)
Encoding.Default.GetString(ms.ToArray())
/// Object from Json
let internal unjson<'t> (jsonString:string) : 't =
use ms = new MemoryStream(ASCIIEncoding.Default.GetBytes(jsonString))
let obj = (new DataContractJsonSerializer(typeof<'t>)).ReadObject(ms)
obj :?> 't
问题
如何使用我的示例调用json
和unjson
函数
为什么将函数指定为内部函数?要执行此类操作,我通常使用:
System.Web.Extensions.JavaScriptSerializer
类。它有易于使用的序列化
和反序列化
方法,可以很好地与泛型配合使用
您需要包含对System.Web.Extensions
程序集的引用
Msdn链接:
否,需要WCF属性(即DataContract
或DataMember
)
我的理解是,您尝试使用的序列化程序类在WCF内部用于序列化
代码示例:
/// Object to Json
let internal json<'t> (myObj:'t) =
let ser = new System.Web.Script.Serialization.JavaScriptSerializer()
ser.Serialize(myObj)
/// Object from Json
let internal unjson<'t> (jsonString:string) : 't =
let ser = new System.Web.Script.Serialization.JavaScriptSerializer()
let obj = ser.Deserialize<'t>(jsonString)
obj
///对象到Json
让内部jsonnice,但我没有看到F#示例,我的示例代码有任何实现吗?我将看看在没有IDE或语法检查的情况下我可以在手机上获得多大的成功。。。接下来…谢谢你的代码,我会接受答案,但你知道吗,我在.net core上,我没有这个库:-)@App2015请查看与.net core相关的更新。希望这有帮助!
let str = """{"name: "test"; version="97234982734"}"""
/// Object to Json
let internal json<'t> (myObj:'t) =
let ser = new System.Web.Script.Serialization.JavaScriptSerializer()
ser.Serialize(myObj)
/// Object from Json
let internal unjson<'t> (jsonString:string) : 't =
let ser = new System.Web.Script.Serialization.JavaScriptSerializer()
let obj = ser.Deserialize<'t>(jsonString)
obj