我正在将c#与json.net一起使用。以下是两种类型。
JSON object - var user = { "name": "test", "title": "mytitle"};
JSON String - var user1 = "{ "name": "test", "title": "mytitle" }";
使用newtonsoft.json对JSON对象进行认可。C#我正在处理JSON的代码
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);
}
当我在param中获得JSON字符串时,避免序列化。 "无法将当前的JSON数组(例如[1,2,3])归为'ucrs.mainwindow sampledata'的类型,因为该类型需要JSON对象 (例如{" name":" value"})正确序列化。 要解决此错误,要么将JSON更改为JSON对象(例如 {" name":" value"})或将避难类型更改为数组或一个 键入实现集合接口(例如Icollection,iList)的类型 喜欢从JSON阵列中进行的列表。 JSONARRAYATTRIBUTE也可以添加到该类型中,以将其强加于 从json数组中验证。 路径'',第1行,位置1。 所以我更改了代码为: 然后我面临着不同的问题 "解析值时遇到意外角色:o。路径'', 第1行,位置1。" 在网页中提出某些事件时,我将使用WebBrowser objectForsCripting在C#中处理该事件。我总是将JSON对象作为param。如何在C#中进行json对象的序列化?请帮助 List<sampledata> s = JsonConvert.DeserializeObject<List<sampledata>>(param);
它非常简单..为这两个工作
string jsonObject = @"{""name"":""test"",""title"":""mytitle""}";
var jsonString = "{ "name": "test", "title": "mytitle" }";
var values1 = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonObject);
var values2 = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonString);
这也工作
var values3 = JsonConvert.DeserializeObject<sampledata>(jsonObject);
我创建了锻炼
JObject jObject = new JObject
{
{"name", "test" },
{"title", "mytitle" }
};
string jObjectStr = jObject.ToString();
var values = JsonConvert.DeserializeObject<sampledata>(jObjectStr);
代码的更新行:
List<sampledata> s = JsonConvert.DeserializeObject<List<sampledata>>(param);
很好。
这里的问题在于,当您试图将列表化为列表时,避难所正在期待数组。
尝试使其成为数组。将此代码行添加到param字符串:
param ="["+param+"]";//make it an array before deserialization
完成代码:
public class sampledata
{
[JsonProperty("name")]
public string name { get; set; }
[JsonProperty("title")]
public string title { get; set; }
}
public void SampleEvent(string param)
{
param ="["+param+"]";//make it an array before deserialization
List<sampledata> s = JsonConvert.DeserializeObject<List<sampledata>>(param);
}