【发布时间】:2017-09-07 09:50:42
【问题描述】:
我在 JSON.NET 中使用 C#。以下是两种类型。
JSON object - var user = { "name": "test", "title": "mytitle"};
JSON String - var user1 = "{ \"name\": \"test\", \"title\": \"mytitle\" }";
使用 Newtonsoft.Json 反序列化 JSON 对象。我在其中处理 JSON 的 C# 代码。
public class sampledata
{
[JsonProperty("name")]
public string name { get; set; }
[JsonProperty("title")]
public string title { get; set; }
}
public void SampleEvent(string param)
{
sampledata s = JsonConvert.DeserializeObject<sampledata>(param);
}
当我在参数中得到 JSON 字符串时,反序列化很好。 但是当我在参数中得到 JSON 对象时 - 我得到的第一个错误是
"无法将当前的 JSON 数组(例如 [1,2,3])反序列化为 'UCRS.MainWindow+sampledata' 类型,因为该类型需要 JSON 对象 (例如 {"name":"value"}) 正确反序列化。
要修复此错误,请将 JSON 更改为 JSON 对象(例如 {"name":"value"}) 或将反序列化类型更改为数组或 实现集合接口的类型(例如 ICollection、IList) 比如可以从 JSON 数组反序列化的 List。 JsonArrayAttribute 也可以添加到类型中以强制它 从 JSON 数组反序列化。
路径'',第 1 行,位置 1。
所以我把代码改成了:
List<sampledata> s = JsonConvert.DeserializeObject<List<sampledata>>(param);
然后我面临不同的问题
" 解析值时遇到意外字符: o. Path '', 第 1 行,位置 1。”
当网页中出现某些事件时,我正在使用 webbrowser objectforscripting 在 c# 中处理该事件。我总是将 JSON 对象作为参数。如何在 C# 中反序列化 JSON 对象?请帮忙
【问题讨论】:
-
发布引发此错误的确切 json 字符串,而不是模型
-
如何用对象调用方法? object.ToString() 将不起作用,因为该对象是匿名类型,不会将字符串转换为 JSON 字符串
-
@Rahul - 这是相同的抛出错误示例。 { "name": "test", "title": "mytitle"} 这是尝试反序列化抛出错误时的 JSON 对象。
-
@SwethaBindu - 您不能反序列化对象(如“将二进制/字符串表示形式读入内存对象”)- 它已经是,只是不是您想要的类型。
标签: c# json json.net deserialization