Convert List
问题描述:
目前,我使用JsonResults将我的对象从服务器端发送到客户端。Convert List <Object> to ByteArray
当前的代码如下:
[HttpGet]
public JsonResult Get()
{
//Create a List object, categoryList which can store anonymous objects later.
List<object> categoryList = new List<object>();
var categoriesQueryResult = Database.Categories
.Where(eachCategory => eachCategory.DeletedAt == null)
.Include(eachCategory => eachCategory.CreatedBy)
.Include(eachCategory => eachCategory.UpdatedBy);
//Loop through each Category entity in the categoriesQueryResult's and add it into categoryList
foreach (var oneCategory in categoriesQueryResult)
{
categoryList.Add(new
{
categoryId = oneCategory.CategoryId,
categoryName = oneCategory.CategoryName,
visibility = oneCategory.Visibility,
displayStart = oneCategory.DisplayStart,
displayEnd = oneCategory.DisplayEnd,
createdAt = oneCategory.CreatedAt,
updatedAt = oneCategory.UpdatedAt,
createdBy = oneCategory.CreatedBy.FullName,
updatedBy = oneCategory.UpdatedBy.FullName,
isSpecial = oneCategory.IsSpecial
});
}//end of foreach
return new JsonResult(categoryList);
}// end of get
所以我想现在要做的就是将列表转换为ByteArray,然后转换后的对象为ByteArray返回给客户端。
我已经试过:
[HttpGet]
public byte[] Get()
{
//Create a List object, categoryList which can store anonymous objects later.
List<object> categoryList = new List<object>();
var categoriesQueryResult = Database.Categories
.Where(eachCategory => eachCategory.DeletedAt == null)
.Include(eachCategory => eachCategory.CreatedBy)
.Include(eachCategory => eachCategory.UpdatedBy);
//Loop through each Category entity in the categoriesQueryResult's and add it into categoryList
foreach (var oneCategory in categoriesQueryResult)
{
categoryList.Add(new
{
categoryId = oneCategory.CategoryId,
categoryName = oneCategory.CategoryName,
visibility = oneCategory.Visibility,
displayStart = oneCategory.DisplayStart,
displayEnd = oneCategory.DisplayEnd,
createdAt = oneCategory.CreatedAt,
updatedAt = oneCategory.UpdatedAt,
createdBy = oneCategory.CreatedBy.FullName,
updatedBy = oneCategory.UpdatedBy.FullName,
isSpecial = oneCategory.IsSpecial
});
}//end of foreach
byte[] convertedObject = categoryList.OfType<byte>().ToArray();
return convertedObject;
}// end of get
但它似乎并没有工作。任何答复或帮助将不胜感激。提前致谢。
答
您可以使用BinaryFormatter来获取字节数组。
byte[] bytes = null;
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream())
{
bf.Serialize(ms, categoryList);
bytes = ms.ToArray();
}
+0
请注意匿名类型不能被'BinaryFormatter'序列化,所以你需要创建''Serializable''类型并将'categoryList'的类型改为'List
为什么要将其转换为字节数组?客户如何设想理解它? –