Я понимаю, что это старый, но так как Крейг не опубликовал пример ... Я подумал, что сделаю.
Как отмечается в комментарии Крэйга к вашему вопросу, ваш JSON плохой.
Если вы поместите это в LINQPad как оператор C #, вы получите правильно экранированные кавычки:
(вам понадобятся System.Runtime.Serialization и System.Web.Extensions.)
Accounts accounts = new Accounts();
accounts.AccountNames = new List<Account>();
accounts.AccountNames.Add(new Account() { Name = "My Saving", AccountBalance = -4.25, ReferenceId = 2});
accounts.AccountNames.Add(new Account() { Name = "My Checking", AccountBalance = 0, ReferenceId = 3});
accounts.AccountNames.Add(new Account() { Name = "Undeposited Funds", AccountBalance = 113.66, ReferenceId = 2});
accounts.AccountNames.Add(new Account() { Name = "Star Account \"Trust\"", AccountBalance = 0, ReferenceId = 50});
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
jsonSerializer.Serialize(accounts.AccountNames).Dump();
}
[System.Runtime.Serialization.DataContract]
public class Accounts {
[System.Runtime.Serialization.DataMember]
public List<Account> AccountNames { get; set; }
}
[System.Runtime.Serialization.DataContract]
public class Account {
[System.Runtime.Serialization.DataMember]
public string Name { get; set; }
[System.Runtime.Serialization.DataMember]
public double AccountBalance { get; set; }
[System.Runtime.Serialization.DataMember]
public int ReferenceId { get; set; }
Возвращает следующие данные JSON:
[{"Name":"My Saving","AccountBalance":-4.25,"ReferenceId":2},
{"Name":"My Checking","AccountBalance":0,"ReferenceId":3},
{"Name":"Undeposited Funds","AccountBalance":113.66,"ReferenceId":2},
{"Name":"Star Account \"Trust\"","AccountBalance":0,"ReferenceId":50}]
Возможно, вы уже решили эту проблему, но было бы интересно посмотреть, как заполняются ваши ViewData.Это просто строка, созданная на лету, или она действительно основана на объекте?