调整JSON代码以在VB.net中使用-Parcel Perfect API

时间:2018-07-22 06:59:38

标签: arrays json vb.net

我很难适应json格式的示例代码以在vb.net应用程序中使用。我已经成功采用了一些代码,但是在改编示例代码的不同部分时,所有想法都出现各种错误。

我正在使用的示例代码来自Parcel Perfect API的支持团队。

我成功地解释了
提供的代码:

$quoteParams = array();
$quoteParams['details'] = array();
$quoteParams['details']['waybill'] = "Y";
$quoteParams['details']['accnum'] = "1234"; 

收件人:

Dim QuoteA As Quote_requestQuote_Request = New Quote_requestQuote_Request
Dim dtls As New Quote_requestQuote_Request_Detail
dtls.waybill = "Y"
dtls.accnum = "1234"
QuoteA.details = dtls 

我提供的确切问题的示例代码为:

//Create contents array object
    $quoteParams['contents'] = array();

    //Create first contents item (index 0 in the contents array)
    $quoteParams['contents'][0] = array();

    //Add contents details
    $quoteParams['contents'][0]['item'] = 1;
    $quoteParams['contents'][0]['desc'] = 'this is a test';
    $quoteParams['contents'][0]['dim1'] = 1;

    //Create second contents item (index 1 in the contents array)
    $quoteParams['contents'][1] = array();

    //Add contents details
    $quoteParams['contents'][1]['item'] = 2;
    $quoteParams['contents'][1]['desc'] = 'ths is another test';
    $quoteParams['contents'][1]['dim1'] = 1;

运行代码时:

Dim contents As Quote_requestQuote_Request_Contents = New Quote_requestQuote_Request_Contents
    Dim ContArr(5) As Object
    ContArr(0) = 1
    ContArr(1) = "Testing"
    ContArr(2) = 30

    QuoteA.contents(0).item = ContArr(0)
    QuoteA.contents(0).description = ContArr(0)
    QuoteA.contents(0).dim1 = ContArr(0)

我需要遍历一组记录以添加多个项目作为Quote_requestQuote_Request_Contents

的内容

到达Object reference not set to an instance of an object时得到QuoteA.contents(0).item = ContArr(0)

由于我是相对的新手,我愿意接受建议。

谢谢!

1 个答案:

答案 0 :(得分:0)

Quote_requestQuote_Request_Contents包含(我认为)多个Quote_requestQuote_Request_Detail对象。通常,将这些初始化如下:

Class Quote_requestQuote_Request_Contents
.....
Sub New
Dim detail as new Quote_requestQuote_Request_Detail
.....
End Sub

既然现在已经很明显了,那么您需要使用以下方法进行工作:

Dim contents As Quote_requestQuote_Request_Contents = New Quote_requestQuote_Request_Contents
Dim detail as new Quote_requestQuote_Request_Detail
    <<Add information to detail>>
    contents.add(detail)

现在,您的内容对象不应引发错误。您可以通过重复该过程向内容对象添加尽可能多的细节对象。

编辑!: 首先,我建议您更改

Dim ContArr(5) As Object

Dim ContArr(5) As Array

第二,我怀疑错误在于您向QuoteA添加内容的方式。试试这个:

QuoteA.contents.item(0) = ContArr(0)
QuoteA.contents.item(1) = ContArr(1)
QuoteA.contents.item(2) = ContArr(2)

....

这假设Item(0)是“ item”属性,Item(1)是描述,等等。