Tag: json

元组如何从JSON序列化和反序列化?

我很好奇Tuple序列化和反序列化。 我使用关键字“json”和“tuple”搜索,但我找不到我想要的东西。

将.json文件加载到c#程序中

我是c#和json对象的新手,我正在尝试将我的网站从基于xml的配置文件移动到基​​于json的配置文件。 有没有办法加载.json文件,以便它变成对象? 我一直在网上搜索,我找不到一个。 我已经将xml文件转换并保存为.json。 我宁愿不使用第三方库。

使用DataContractJsonSerializer反序列化一个简单的JSON数组

我确定这个问题一再被问到,但由于某种原因,我仍然无法让这个问题起作用。 我想反序列化包含单个成员的JSON对象; 一个字符串数组: {“results” : [“a”, “b”]} 这是我正在尝试反序列化的类: public class Whatever { [DataMember(Name = “results”)] public string[] Results { get; protected set; } } 这是Deserialize方法: private static T Deserialize(string json) { var instance = Activator.CreateInstance(); using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(json))) { var serializer = new DataContractJsonSerializer(instance.GetType()); return (T)serializer.ReadObject(ms); } } 像Deserialize(“{\”results\” : [\”a\”, \”b\”]}”)类的调用返回一个初始化的Whatever实例,但Results数组保持为null […]

Newtonsoft.Json反序列化base64图像失败

我正在使用Newtonsoft.Json将我的webservice的输出反序列化为一个对象。 它工作正常,直到我将一个Bitmap属性添加到我的类(名为User )来持有一个头像。 web服务将该属性作为Base64字符串返回,这是预期的。 问题是当我尝试将JSON从WS转换回List ,会在此代码块中抛出JsonSerializationException : // T is IList response.Content.ReadAsStringAsync().Proceed( (readTask) => { var json = ((Task)readTask).Result; var result = JsonConvert.DeserializeObject(json); //<– it fails here // do stuff! }); exception输出是: Error converting value “System.Drawing.Bitmap” to type ‘System.Drawing.Bitmap’. Path ‘[2].Avatar 并查看内部exception: {“Could not cast or convert from System.String to System.Drawing.Bitmap.”} 很明显,它无法解析Base64字符串,但目前尚不清楚原因。 任何想法/解决方法? 编辑我知道我可以使用Convert.FromBase64String来获取一个字节数组并从中加载一个位图。 然后我想更新我的问题,询问我如何跳过或手动解析该字段。 […]

使用DataContractJsonSerializer将JSON反序列化为Dictionary

我在响应中收到以下JSON结果: {“result”: { “”:-41.41, “ABC”:0.07, “XYZ”:0.00, “Test”:0.00 }} 我准备了以下用于反序列化的课程: [DataContract] public sealed class RpcResponse { [DataMember(Name = “result”)] public List<KeyValuePair> Result { get; set; } } 但是,当我要使用DataContractJsonSerializer对其进行反序列化时, Result属性最终为零条目。 (在将Result声明为Dictionary时也不起作用) 有没有办法用DataContractJsonSerializer执行此操作?

Json序列化类型的对象时检测到循环引用

给课程: public class Parent { public int id {get; set;} public int name {get; set;} public virtual ICollection children {get; set;} } [Table(“Child”)] public partial class Child { [Key] public int id {get; set;} public string name { get; set; } [NotMapped] public string nickName { get; set; } } 和控制器代码: List parents = parentRepository.Get(); […]

使用RestSharp发送HTTP POST Multipart / form-data字段

我在使用RestSharp进行REST API时遇到问题,我需要将其用于我正在进行的项目。 我需要发出的请求分为三部分:头API密钥,要上传的文件和一堆JSON格式的数据。 API要求使用表单字段名称“data”发送数据部分。 出于某种原因,这会导致问题,因为它在请求正文中命名字段“data”。 我的代码如下: var request = new RestRequest(UPLOAD_DOC_URLSEGMENT, Method.POST) { RequestFormat = DataFormat.Json, AlwaysMultipartFormData = true, JsonSerializer = new RestSharpJsonDotNetSerializer(customSerializer) }; if (doc is DocA) request.AddParameter(“data”,doc as DocA,ParameterType.RequestBody); //request.AddBody(doc as DocA); else request.AddParameter(“data”, doc as DocB,ParameterType.RequestBody); //request.AddBody(doc as DocB); request.AddFile(“file”, doc.File.FullName); 如您所见,我试图同时使用request.AddBody(doc)方法和request.AddParameter(name, object, type)方法。 它们似乎都没有正确发送数据,因为我收到服务器的响应,说明缺少必需的参数。 使用fiddler我可以看到二进制数据,但从来没有使用这两种方法的JSON数据。 我已经浏览了RestSharp文档,但我找不到任何允许我为表单数据体指定特定“字段”名称作为“数据”的内容,这是我认为导致我遇到的问题。 我在这做错了什么? 编辑:进一步检查fiddler后,它似乎没有将我的JSON数据添加到HTTP请求的主体。 但是,在上传(执行命令)之前有一个断点,我可以在参数列表(和文件列表)中看到所有序列化的内容。 当用Fiddler检查时,我看到文件二进制数据,然后是多部分/表格数据边界,然后什么都没有。 我认为这是我的数据应该是…

如何将ac#二维数组转换为JSON对象?

如果我在C#中有一个二维数组 – 我怎样才能将它转换为包含二维数组的JSON字符串? 例如。 int[,] numbers = new int[8,4]; JavaScriptSerializer js = new JavaScriptSerializer(); string json = js.Serialize(numbers); 在JSON对象中给出一个平面的一维数组。 Microsoft文档说明: ‘多维数组被序列化为一维数组,你应该将它用作平面数组。

根据Winforms中的json文本动态创建树视图

我正在构建一个从外部源获取运行时JSON消息的应用程序。 我对消息文本的结构一无所知。 我想获取这个JSON文本,将其呈现为树视图(或类似的东西,关于UI),在我刚刚动态创建的树视图中编辑此JSON,并将文本发送回源。 我真的不知道从哪里开始……有什么建议吗?

如何装饰JSON.NET StringEnumConverter

我正在使用一个api,返回这样的字符串值。 some-enum-value 我尝试将这些值放在枚举中,因为默认的StringEnumConverter没有完成这项工作,我尝试用一​​些额外的逻辑来装饰这个转换器。 如何确保正确反序列化值? 以下代码是我尝试完成这项工作。 但是行reader = new JsonTextReader(new StringReader(cleaned)); 因为base.ReadJson无法将字符串识别为JSON,所以打破了整个事情。 有没有更好的方法来实现这一点,而无需在StringEnumConverter中实现所有的强制逻辑? 如何解决我的方法? public class BkStringEnumConverter : StringEnumConverter { public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.String) { var enumString = reader.Value.ToString(); if (enumString.Contains(“-“)) { var cleaned = enumString.Split(‘-‘).Select(FirstToUpper).Aggregate((a, b) => a + b); reader = new […]