我正在使用C#和JSON.NET . 以下是两种类型 .
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);
}
When I got JSON String in param the deserialization is fine. 但是当我在param中获得JSON对象时 - 我得到的第一个错误是
“无法将当前JSON数组(例如[1,2,3])反序列化为类型'UCRS.MainWindow sampledata',因为该类型需要JSON对象(例如{”name“:”value“})才能正确反序列化 . 修复此错误要么将JSON更改为JSON对象(例如{“name”:“value”}),要么将反序列化类型更改为数组或实现集合接口的类型(例如ICollection,IList),如List可以从JSON数组反序列化.JsonArrayAttribute也可以添加到类型中以强制它从JSON数组反序列化 . 路径'',第1行,位置1 .
所以我将代码更改为:
List<sampledata> s = JsonConvert.DeserializeObject<List<sampledata>>(param);
然后我面临着不同的问题
“解析值时遇到意外的字符:o . 路径'',第1行,位置1”
当我在网页中引发一些事件时,我正在使用webbrowser objectforscripting在c#中处理该事件 . 我总是把JSON对象作为param . 如何在C#中反序列化JSON对象?请帮忙
2 回答
更新的代码行:
很好 .
这里的问题是当你试图反序列化到列表时,反序列化器期望一个数组 .
尝试使它成为一个数组 . 将这行代码添加到param字符串:
完整代码:
它很简单..两者兼顾
这也有效
我创建了JObject