我如何在dotnet 3.5中json序列化这个数组结构?
<?php
$response = array(
'file_version' => 2,
'files' =>
array(
array(
'file_name' => 'test1.exe',
'url' => 'http://127.0.0.1/heartkey/files/test1.exe',
'path' => 'images\filename\\'
),
array(
'file_name' => 'test2.exe',
'url' => 'http://127.0.0.1/heartkey/files/test2.exe',
'path' => 'images\filename\\'
),
array(
'file_name' => 'test3.exe',
'url' => 'http://127.0.0.1/heartkey/files/test3.exe',
'path' => 'images\filename\\'
)
),
'files_max_size' => 3000
);
$json = json_encode( $response );
echo $json;
我找到了基本方法,但我不知道如何在vb中表示, 我尝试使用数组并嵌套字典,但没有运气。 我在vb.net中的知识是基本的。
这就是我所拥有的:
Imports System.Web.Script.Serialization
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
Dim info As Dictionary(Of String, Dictionary(Of String, String))
'info.Add("files", New Dictionary(Of String, String))
Dim serializer As New JavaScriptSerializer()
Dim serializedResult = serializer.Serialize(info)
Response.Write(serializedResult)
End Sub
End Class
答案 0 :(得分:0)
网络表单(.aspx
)不是生成JSON
的绝佳技术,例如供浏览器AJAX调用使用,因为它有一个繁重的页面生命周期,并且往往会继承大量的环境开销(母版页,标题等),这些开销需要从响应中删除。
REST / JSON类型服务的首选现代技术是Microsoft WebAPI,但不幸的是,这不能用于.Net 3.5,只有4.0及更高版本。
您可以做的是创建.ASMX Web服务并使用WebMethods公开您的Json-Serialized字符串:
<System.Web.Script.Services.ScriptService()> _
Public Class WebService1
Inherits System.Web.Services.WebService
<System.Web.Services.WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
Public Function RenderJson() As Object
Dim theObjects() = {
New With {
.file_name = "test1.exe",
.url = "http://127.0.0.1/heartkey/files/test1.exe",
.path = "images\filename\\"
},
New With {
.file_name = "test2.exe",
.url = "http://127.0.0.1/anotherUrl",
.path = "images\foo"
}
}
Return theObjects
End Function
我在这里使用过匿名类,但您也可以使用强名称类来保存数据。 (我不认为我的javascript对象的形状非常正确,但你明白了。)
修改 - 错误地返回字符串:( 我已经粘贴了一个完整的工作示例,包括GitHub gist
上的客户端Ajax调用