c# - 数组不支持类型 System.String

标签 c# json

我一直在阅读有关反序列化 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/

相关文章:

c# - NHibernate 可以设置非公共(public)属性吗?

c# - EF5 启动项目 :Error Running transformation: Please overwrite the replacement token '$edmxInputFile$'

php - 添加 Symfony 应用程序时出现 JSON_ERROR

javascript - 使用 jQuery 将 XML 转换为 JSON 并输出为 HTML

Json-Opening Yelp Data Challenge的数据集

c# - C#中的简单for循环

c# - 为同一行文本 C# 读取不同子文件夹中的特定文件

c# - 是否可以更新 Service Fabric 集群 list ?

jquery - 从 Dribble api 解析 json "meta"

python - 当键和值包含在现有字段的值中时读取它们