我一直在阅读有关反序列化 json 的线程,并尝试了多种方法来实现它,但似乎无法实现。 这是我到目前为止所做的:
类
public class oVesselMovement : oVMLocation, IWPConditions, IVessel, IStatus
{
public int wpID { get; set; }
public string charts { get; set; }
public string latNS { get; set; }
public string longEW { get; set; }
public string course { get; set; }
public double toNextWPNM { get; set; }
public double toGoNM { get; set; }
public string eda { get; set; }
public string eta { get; set; }
}
根类
public class RootVM
{
public List<oVesselMovement> jsnObj { get; set; }
}
JSON
{"jsnObj":[{"vmID":"1","charts":"2111","latNS":"10°29.10 N","longEW":"123°25.83 E","course":"420°","toNextWPNM":0,"toGoNM":"27","eda":"12-15-2016","eta":"11:01"},{"vmID":"2","charts":"2211","latNS":"11°29.10 N","longEW":"124°25.83 E","course":"420°","toNextWPNM":0,"toGoNM":"27","eda":"12-15-2016","eta":"11:01"}]}
反序列化
[WebMethod]
public void saveVMDT(string jsnObj)
{
RootVM rootObj = new JavaScriptSerializer().Deserialize<RootVM>(jsnObj);
foreach (var obj in rootObj.jsnObj)
{
try
{
...
}
我也试过转换 List<oVesselMovement> jsnObj { get; set; }
到
oVesselMovement[] jsnObj
但无济于事。
我一直收到这个错误:
"{"Message":"Type \u0027System.String\u0027 is not supported for deserialization of an array."....
如有任何帮助,我们将不胜感激。
最佳答案
toGoNM
是字符串,不是数字。您需要使用正确的类型,在 C# 端或 JSON 端修复它。您在 C# 类中有 wpID
,但在 JSON 中有 vmID
;又一次,错误的类型。
关于c# - 数组不支持类型 System.String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40929818/