【问题标题】:how to json php array structure in asp.net 2008如何在asp.net 2008中使用json php数组结构
【发布时间】:2014-12-31 15:33:11
【问题描述】:

如何在 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

【问题讨论】:

  • 您的 PHP 代码正在将您的对象编码为 Json 对象,这是您要找的吗?

标签: asp.net json vb.net


【解决方案1】:

Web 表单 (.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 调用

【讨论】:

  • @user3401991 虽然我的原始答案返回了一个字符串,但它确实已编译。我已经上传了一个完整的示例作为 GitHub Gist - 将所有文件复制到同一个文件夹并构建它。 default.aspx 上有一个 Ajax 客户端示例 - 注意无关的 d root object
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 2013-12-14
  • 2011-05-08
相关资源
最近更新 更多