gpt4 book ai didi

c# - 从 JSON (ScriptObject) 反序列化为托管对象

转载 作者:行者123 更新时间:2023-11-30 17:19:22 25 4
gpt4 key购买 nike

我正在尝试反序列化通过 Silverlight 从 javascript 返回的 json。

基本上在客户端,我返回 JSON,在我的 C# 处理程序中,我通过 ScriptObject 获取它...

我在 ScriptObject 上尝试了 ConvertTo 方法,但仍然无法得到任何东西。

我如何才能将 ScriptObject 转换为作为对象列表的 C# 对象?

SomeCallBack(ScriptObject result) {

// convert to managed object

var objects = result.ConvertTo<List<SomeObjectClass>>(); // can't get any property from it..

// however the count is correct...
MessageBox.Show("count: " + objects.Count); // shows correct count of items
}

最佳答案

Silverlight 不包含获取 ScriptObject 并序列化为 JSON 字符串的 API。

Silverlight 通过 System.ServiceModel.Web dll 中的 System.Runtime.Serialization.Json.DataContractJsonSerializer 类支持 JSON 序列化。

您需要获取一些基于 JavaScript 的 JSON 序列化程序来转换您尝试作为 ScriptObject 传递的值,以便您传递 JSON 字符串参数而不是 ScriptObject。我相信这项工作的流行工具是 JQuery。

现在看起来您期待的是一个集合(JSON 类似“[x1,x2,,,xn]”),其中 x 项的类型为 SomeObjectClass。您可以使用这个小的通用函数来反序列化这样的列表:-

    List<T> DeserializeJSON<T>(string json)
{

byte[] array = Encoding.UTF8.GetBytes(json);
MemoryStream ms = new MemoryStream(array);

DataContractJsonSerializer dcs = new DataContractJsonSerializer(typeof(List<T>));
return (List<T>)dcs.ReadObject(ms);

}

你会这样做:-

 var objects = DeserializeJSON<SomeObjectClass>(someJSON);

关于c# - 从 JSON (ScriptObject) 反序列化为托管对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4941445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com