我正在尝试序列化一个列表,然后将 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) 无效。虽然在制作了一个新的对象列表之后,后者是工作的对象而不是第一个对象。
添加回答
举报
0/150
提交
取消