在VB6中将对象序列化为JSON

时间:2014-08-01 19:58:10

标签: c# asp.net-mvc json serialization vb6

我遇到一个问题,在处理VB6项目时,需要将Object序列化为JSON对象(或JSON格式的字符串),然后通过HTTP Request(POST方法)将其发送到另一个Web应用程序(MVC.NET) )将复杂对象作为参数的方法。我正在尝试利用MVC.Net 3+以及将JSON对象反序列化为我的类(Almighty)对象的能力。目前我可以使用可以将格式正确的字符串转换为JSON对象的VB-JSON库,但是我想将对象序列化为JSON对象,或者首先将其转换为格式正确的字符串,然后再转换为JSON对象(通过使用VB-JSON)。

VB6全能类模块是我想序列化的对象的一个​​例子(尽管我需要能够序列化几乎任何类对象)。

是否有一个库(或解决方法)要在VB6中完成此任务?

Option Explicit

Private mName As String
Private mPhone As String
Private mAge As Integer


Public Property Get Name() As String
    Name = mName
End Property

Public Property Let Name(ByVal vNewValue As String)
    mName = vNewValue
End Property

Public Property Get Phone() As String
    Phone = mPhone
End Property

Public Property Let Phone(ByVal vNewValue As String)
    mPhone = vNewValue
End Property

Public Property Get Age() As Integer
    Age = mAge
End Property

Public Property Let Age(ByVal vNewValue As Integer)
    mAge = vNewValue
End Property

这里有一些我现在在VB6项目中用于创建JSON对象之前将其发送到MVC.Net应用程序。问题是VB-JSON中的JSON.parse()只接受字符串而不接受对象。任何想法,我将如何做这样的事情:

Dim a As cAlmighty
Set a = New cAlmighty
a.Name = "Igor"
a.Age = 18
a.Phone = "123-123-1234"

Dim param As Object
Set param  = JSON.parse(a) '<--- THIS IS THE PROBLEM, VB-JSON''s parse method accepts only string which means I would need to find a way to serialize the object into JSON which obviously preferred or actually build a string simply like this: { ""Name"": """ & a.Name & """, ""Age"": " & a.Age & " }" which is primitive way of serialization (no validation, etc.)

在我将param作为JSON对象后,我会通过HTTP Post Request将其发送到我的MVC.net控制器

支持信息

MVC.Net控制器方法

/// <summary>
/// 1. Takes an Almighty object as a parameter from an old VB6 (COM+) application
/// 2. Do stuff with Almighty
/// 3. Return an XML formatted string back to VB6 application.
/// </summary>
[HttpPost]
public string CalledByVB6App(Almighty param) {
    if (param != null) return "<Success>True</Success>";

    return "<Success>False</Success>";
}

C#全能对象类

public class Almighty
{
    public string Name { get; set; }
    public string Phone { get; set; }
    public int Age { get; set; }
}

1 个答案:

答案 0 :(得分:0)

在VB6类模块中获取保存事件。

可持续财产

设置一个值,该值确定对象是否可以跨实例保存和还原数据。只能在设计时设置。

语法

object.Persistable [= number]

Persistable属性语法包含以下部分:

部分描述 object一个对象表达式,其值为“应用于”列表中的一个对象。 number一个整数,指定持久性行为,如“设置”中所述。

设置

号码的设置为:

常数设定说明 vbNotPersistable 0(默认)无法保留对象。 vbPersistable 1对象可以保留。

说明

Persistable属性仅适用于公共和可创建的类。当Persistable设置为vbPersistable时,会向该类添加以下事件:InitProperties,ReadProperties和WriteProperties。 PropertyChanged方法也被添加到类中。


向MSDN发送反馈。请点击此处查看MSDN Online资源。