我很难适应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)
。
由于我是相对的新手,我愿意接受建议。
谢谢!
答案 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)是描述,等等。