如何将Jsonstring反序列化为c#listObject

本文关键字:c#listObject 反序列化 Jsonstring | 更新日期: 2023-09-27 18:02:22

我正在尝试将Jsonstring反序列化为c#listObject。数据来自javascript,带有:

params = "data=" + JSON.stringify(queryResult.$$rows);      
XHR.setRequestHeader("Content-type", "application/x-www-form-urlencoded");  
XHR.setRequestHeader("Content-length", params.length);      
XHR.setRequestHeader("Connection", "close");
XHR.send(params);

然后在asp.net中尝试使用反序列化Jsonstring

public class HomeController : Controller
{
    [HttpPost]
    public ActionResult doWork(string data) 
    {
        var dump = JsonConvert.DeserializeObject<List<RootObject>>(data);
        return new EmptyResult();
    }   
}

public class RootObject
{
    public string data { get; set; }
    public string text { get; set; }
}

如果我在查找局部变量数据。我找到了一个有效的json字符串:

[  
   [  
      {  
         "data":"Australia",
         "text":"Australia"
      }
   ],
   [  
      {  
         "data":"China",
         "text":"China"
      }
   ],
   [  
      {  
         "data":"Hong Kong",
         "text":"Hong Kong"
      }
   ],
   [  
      {  
         "data":"Indonesia",
         "text":"Indonesia"
      }
   ],
   [  
      {  
         "data":"Netherlands",
         "text":"Netherlands"
      }
   ]
]

当asp.net试图执行JsonConvert.DescializeObject>(数据(时;它将返回一条错误消息:

JsonSerializationException未由的用户代码处理类型"Newtonsoft.Json.JsonSerializationException"发生在newTonisoft.Json.ddl,但未在用户代码中处理

附加信息:无法反序列化当前JSON数组(例如[1,2,3](转换为类型"maps.Controllers.RootObject",因为类型需要一个JSON对象(例如{"name":"value"}(来反序列化正确地

我该怎么解决这个问题?这是正确的javascript方式吗?

如何将Jsonstring反序列化为c#listObject

string jsonTxt = @"[  
[  
    {  
        ""data"":""Australia"",
        ""text"":""Australia""
    }
],
[  
    {  
        ""data"":""China"",
        ""text"":""China""
    }
],
[  
    {  
        ""data"":""Hong Kong"",
        ""text"":""Hong Kong""
    }
],
[  
    {  
        ""data"":""Indonesia"",
        ""text"":""Indonesia""
    }
],
[  
    {  
        ""data"":""Netherlands"",
        ""text"":""Netherlands""
    }
]
]";
var result = JsonConvert.DeserializeObject<List<RootObject>[]>(jsonTxt);

结果是您需要