我正在尝试通过包含一些 JSON 的隐藏文本字段将一些数据发布到我的 MVC 3 控制器。我有通过字符串课程列表传入的 JSON。任何人都知道为什么这不起作用?
我所做的只是从 JSON 字符串中生成一个字节 [],将其写入 MemoryStream,然后反序列化该流——或者,尝试这样做。BookCourse bc 总是以空属性结束。
这是我将使用的 JSON 之类的东西:
[{"coursesection":"1234","netlogon":"jsmith","label":"CRSE-1313 Generic Course Titling ~ Joe Smith"}]
这是要反序列化的对象:
using System.Runtime.Serialization;
namespace xxxx.Models
{
[DataContract]
public class BookCourse
{
[DataMember]
public string coursesection { get; set; }
[DataMember]
public string netlogon { get; set; }
[DataMember]
public string label { get; set; }
}
}
最后,执行它的控制器动作代码——
var byteArray = Encoding.ASCII.GetBytes(coursesList);
// Deserialize byte array to data type
var stream = new MemoryStream();
stream.Write(byteArray, 0, byteArray.Length);
var crs = new DataContractJsonSerializer(typeof(BookCourse));
stream.Position = 0;
// Read stream to object
ad.CourseSectionIDs = new List<int>();
try
{
var bc = (BookCourse) crs.ReadObject(stream);
while (bc.coursesection != null)
{
cs.AssociateCourseBook(bc.netlogon, bc.coursesection, ad.ISBN);
bc = (BookCourse)crs.ReadObject(stream);
}
}
catch (System.Runtime.Serialization.SerializationException e)
{
// Is this best practice for handling "none"?
}