Я пытаюсь десериализовать свой json с помощью javascriptserializer, но получаю сообщение об ошибке «Недопустимый примитив 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);