我尝试使用 javascriptserializer 反序列化我的 json,但收到错误“无效的 json 原语”
其他帖子提到要验证 json,我也这样做了。
JavaScriptSerializer sr = new JavaScriptSerializer();
dynamic jsonObject = sr.DeserializeObject(@"TableReloadStatus.json");
jsonObject.SchemaName = "Test";
var modifiedJsonString = sr.Serialize(jsonObject);
我的JSON:
[{
"Tables":[
{
"ServerName": "win-3hog2kbe0g2",
"TaskName": "tskMovieDemoUAT2",
"SchemaName": "MOVIEDEMO",
"TableName": "MOVIE_FACT_HDFS_EXT_TAB",
"DateReload": "01/25/2019"
},
{
"ServerName": "win-3hog2kbe0g2",
"TaskName": "tskMovieDemoUAT",
"SchemaName": "MOVIEDEMO",
"TableName": "MOVIE_FACT_HDFS_EXT_TAB",
"DateReload": "01/24/2019"
}
]
}]
最佳答案
有一个 JSON 数组包含 Tables
另一个 JSON 数组不是对象,因此您可以尝试使用它。
JavaScriptSerializer sr = new JavaScriptSerializer();
dynamic jsonObject = sr.DeserializeObject(@"TableReloadStatus.json");
jsonObject[0].Tables[0].SchemaName = "Test";
我推荐json.net图书馆。
我会使用类模型来携带该 JSON,而不是使用 dynamic
JsonConvert.DeserializeObject<T>
public class Table
{
public string ServerName { get; set; }
public string TaskName { get; set; }
public string SchemaName { get; set; }
public string TableName { get; set; }
public string DateReload { get; set; }
}
public class RootObject
{
public List<Table> Tables { get; set; }
}
然后使用会像。
string jsonData = File.ReadAllText(@"TableReloadStatus.json");
var jsonObject = JsonConvert.DeserializeObject<List<RootObject>>(jsonData);
关于c# - 验证文件后错误无效的 json 原语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54360276/