能够进行序列化字符串类型,而不是对象类型



我正在将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。

所以我更改了代码为:

      List<sampledata> s = JsonConvert.DeserializeObject<List<sampledata>>(param);

然后我面临着不同的问题

"解析值时遇到意外角色:o。路径'', 第1行,位置1。"

在网页中提出某些事件时,我将使用WebBrowser objectForsCripting在C#中处理该事件。我总是将JSON对象作为param。如何在C#中进行json对象的序列化?请帮助

它非常简单..为这两个工作

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);
     } 

相关内容

  • 没有找到相关文章

最新更新