为了账号安全,请及时绑定邮箱和手机立即绑定

在 C# 中序列化 List<T> 并将其反序列化为 js 数组

在 C# 中序列化 List<T> 并将其反序列化为 js 数组

UYOU 2021-12-12 17:42:26
我正在尝试序列化一个列表,然后将 json 字符串反序列化为一个 js 数组。<script>function listContainerBlobs(json, container) {    @*var arr = @JsonConvert.DeserializeObject(json);*@    var arr = JSON.parse(json);    var blobs = document.getElementById('container-blob-display').innerHTML = "<h4>" + container + "</h4>";    var otherDiv = document.getElementById('section-1');    var thisDiv = document.getElementById('section-2');    otherDiv.style.display = 'none';    thisDiv.style.display = 'block';    var blobNumber = 0;    for (i = 0; i < arr.length; i++){        blobNumber++;        var blobId = "blobId" + blobNumber;        blobs += "<p class='search-result' id='" + blobId + "' onclick='downloadBlob('" + blobId + "', '" + arr[i].Name + "', '" + container + "')' style='float: left; '>" + arr[i].Name + "</p>";    }}</script>这是 razor 页面中的 C# 代码,它序列化了一个方法返回的 List。我想知道 json 字符串的格式是否不同,因此我无法在 js 中反序列化 json 字符串。var blobs = await Model.ListContainerBlobs(container.Name);var jsonBlob = Json.Serialize(blobs);//var jsonBlob = JsonConvert.SerializeObject(blobs);我blobs在 html 页面中使用了一些 lopps 和东西,但我想我会重用这个方法调用来处理 js 函数中的参数,listContainerBlobs(json, container)因此是 json 序列化。js函数调用:<p class="search-result blob-container" id="@containerId" onclick="listContainerBlobs('@jsonBlob','@containerModel.Name')">@containerModel.Name</p>在浏览器中调试时收到错误:有没有人对此有解决方法,或者有更好的解决方案来序列化/反序列化这个 c# 列表?如果这里重要的是我序列化的不同 json 类型Json.Serialize(blob); :"[{\"StreamWriteSizeInBytes\":4194304,\"ServiceClient\":{\"BufferManager\":null,\"Credentials\":{\"SASToken\":null,\"AccountName\":\"devstoreaccount1 \",\"KeyName\":null,\"IsAnonymous\":false,\"IsSAS\":false,\"IsSharedKey\":true,\"IsToken\":false,\"SASSignature\":null },\"BaseUri\":\" http://127.0.0.1:10000/devstoreaccount1 \",\"StorageUri\":{\"PrimaryUri\":\" http://127.0.0.1:10000/devstoreaccount1 \",\"SecondaryUri\":\" http://127.0.0.1:10000/devstoreaccount1-secondary\"},\"DefaultRequestOptions\":{\"RetryPolicy\":
查看完整描述

1 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

我必须通过创建一个包含我想要/需要的值的我自己的对象来做一个解决方法。


List<object> objects = new List<object>();


objects.Add(new

    {

        blobCount = blobs.Count,

        blobs = blobs.Select(x => new

        {

            Name = x.Name,

            Container = x.Container,

            Blobtype = x.BlobType,

            Uri = x.Uri

         })

     });


var jsonBlob = JsonConvert.SerializeObject(blobObject);

我注意到反序列化 json-string 的结果是错误的。字符串的一部分没有正确反序列化(根据我的人眼和思想,但根据 json 格式可能是正确的)。反正我不需要这个属性,所以这在我的情况下非常有效。


希望这可以帮助别人别人...


同样根据此链接(检查您的 json 字符串的格式是否有效), Json.Serialize(i) 是正确的,但在浏览器中出现故障,并且 JsonConverter.SerializeObject(i) 无效。虽然在制作了一个新的对象列表之后,后者是工作的对象而不是第一个对象。


查看完整回答
反对 回复 2021-12-12
  • 1 回答
  • 0 关注
  • 252 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信