反序列化动态对象JSON,Net

时间:2019-05-16 06:35:34

标签: c# json.net sqlkata

我有两个应用程序: 第一个使用SqlKata从数据库中获取数据,然后使用Newtonsoft将其序列化并将其保存到文件中 例如:

  SqlServerCompiler compiler = new SqlServerCompiler();
                QueryFactory queryFactory = new QueryFactory(MyConnection,compiler);
                 var data = queryFactory.Query("tblName").Where("ID",1).First();
                string json = JsonConvert.SerializeObject(data);
                StreamWriter writer = new ...
                writer.write(json);

这很好用,并且使用其中的数据创建了json文件
 第二个应用程序读取JSON文件,对其进行反序列化,然后将其添加到数据库中     例如:

  using(StreamReader streamReader = new StreamReader(@"C:/MyFile")){
    string temp = streamReader.ReadToEnd();
    var toInsert = JsonConvert.DeserializeObject(temp);
    //note that i dont have a class that represents the structure of the deserialized object,thus i should catch it dynamically
    queryFactory.Query("tblName").Insert(toInsert);
}
  

插入将引发异常:   System.Reflection.TargetParameterCountException:'参数计数   不匹配”

知道数据库表是相同的。

1 个答案:

答案 0 :(得分:1)

如果您没有课程,则可以使用动态类型。动态类型在编译时转义了类型检查;而是在运行时解析类型。

尝试一下:

 var toInsert = JsonConvert.DeserializeObject<dynamic>(temp);