VB.NET / ShipEngine Walkthrough / Parse shipment info w/ known fields
Back to Collection Items
' This example assumes the Chilkat API to have been previously unlocked.
' See Global Unlock Sample for sample code.
Dim http As New Chilkat.Http
Dim success As Boolean
' Use this online tool to generate code from sample JSON: Generate Code to Create JSON
' The following JSON is sent in the request body.
' {
' "text": "I need to ship a 17lb package that’s 36x12x24in. It’s going to Amanda Miller’s house at 525 Winchester Blvd in San Jose California. The zip code is 95128. It's really valuable, so insure it for $400 and require an adult signature please.",
' "shipment": {
' "ship_from": {
' "name": "John Doe",
' "company_name": "Example Corp.",
' "address_line1": "4009 Marathon Blvd",
' "city_locality": "Austin",
' "state_province": "TX",
' "postal_code": "78756",
' "country_code": "US",
' "phone": "512-555-5555"
' }
' }
' }
Dim json As New Chilkat.JsonObject
json.UpdateString("text","I need to ship a 17lb package that’s 36x12x24in. It’s going to Amanda Miller’s house at 525 Winchester Blvd in San Jose California. The zip code is 95128. It's really valuable, so insure it for $400 and require an adult signature please.")
json.UpdateString("shipment.ship_from.name","John Doe")
json.UpdateString("shipment.ship_from.company_name","Example Corp.")
json.UpdateString("shipment.ship_from.address_line1","4009 Marathon Blvd")
json.UpdateString("shipment.ship_from.city_locality","Austin")
json.UpdateString("shipment.ship_from.state_province","TX")
json.UpdateString("shipment.ship_from.postal_code","78756")
json.UpdateString("shipment.ship_from.country_code","US")
json.UpdateString("shipment.ship_from.phone","512-555-5555")
http.SetRequestHeader("API-Key","{{API_KEY}}")
http.SetRequestHeader("Content-Type","application/json")
Dim resp As Chilkat.HttpResponse = http.PostJson3("https://api.shipengine.com/v1/shipments/recognize","application/json",json)
If (http.LastMethodSuccess = False) Then
Debug.WriteLine(http.LastErrorText)
Exit Sub
End If
Dim sbResponseBody As New Chilkat.StringBuilder
resp.GetBodySb(sbResponseBody)
Dim jResp As New Chilkat.JsonObject
jResp.LoadSb(sbResponseBody)
jResp.EmitCompact = False
Debug.WriteLine("Response Body:")
Debug.WriteLine(jResp.Emit())
Dim respStatusCode As Integer = resp.StatusCode
Debug.WriteLine("Response Status Code = " & respStatusCode)
If (respStatusCode >= 400) Then
Debug.WriteLine("Response Header:")
Debug.WriteLine(resp.Header)
Debug.WriteLine("Failed.")
Exit Sub
End If
' Sample JSON response:
' (Sample code for parsing the JSON response is shown below)
' {
' "score": 0.9604458751176728,
' "shipment": {
' "confirmation": "adult_signature",
' "ship_to": {
' "name": "Amanda Miller",
' "company_name": "Adult Signature",
' "address_line1": "525 Winchester Blvd",
' "city_locality": "San Jose",
' "state_province": "CA",
' "postal_code": "95128",
' "address_residential_indicator": "yes"
' },
' "ship_from": {
' "name": "John Doe",
' "company_name": "Example Corp.",
' "phone": "512-555-5555",
' "address_line1": "4009 Marathon Blvd",
' "city_locality": "Austin",
' "state_province": "TX",
' "postal_code": "78756",
' "country_code": "US",
' "address_residential_indicator": "unknown"
' },
' "packages": [
' {
' "weight": {
' "value": 17,
' "unit": "pound"
' },
' "dimensions": {
' "length": 36,
' "width": 12,
' "height": 24,
' "unit": "inch"
' },
' "insured_value": {
' "amount": 400,
' "currency": "USD"
' }
' }
' ]
' },
' "entities": [
' {
' "type": "weight",
' "score": 0.9805313966503588,
' "text": "17lb",
' "start_index": 17,
' "end_index": 20,
' "result": {
' "value": 17,
' "unit": "pound"
' }
' },
' {
' "type": "dimensions",
' "score": 1,
' "text": "36x12x24in",
' "start_index": 37,
' "end_index": 46,
' "result": {
' "length": 36,
' "width": 12,
' "height": 24,
' "unit": "inch"
' }
' },
' {
' "type": "dimension",
' "score": 0.9805313966503588,
' "text": "24in",
' "start_index": 43,
' "end_index": 46,
' "result": {
' "unit": "inch",
' "value": 24
' }
' },
' {
' "type": "address",
' "score": 0.9686815805970408,
' "text": "to Amanda Miller’s house at 525 Winchester Blvd in San Jose California. The zip code is 95128. It's really valuable, so insure it for $400 and require an adult signature",
' "start_index": 60,
' "end_index": 228,
' "result": {
' "direction": "to",
' "name": "Amanda Miller",
' "company_name": "Adult Signature",
' "address_line1": "525 Winchester Blvd",
' "city_locality": "San Jose",
' "state_province": "CA",
' "postal_code": "95128",
' "address_residential_indicator": "yes"
' }
' },
' {
' "type": "person",
' "score": 0.9519646137063122,
' "text": "Amanda Miller",
' "start_index": 63,
' "end_index": 75,
' "result": {
' "value": "Amanda Miller"
' }
' },
' {
' "type": "residential_indicator",
' "score": 0.9519646137063122,
' "text": "house",
' "start_index": 79,
' "end_index": 83,
' "result": {
' "value": "yes"
' }
' },
' {
' "type": "address_line",
' "score": 0.9805313966503588,
' "text": "525 Winchester Blvd",
' "start_index": 88,
' "end_index": 106,
' "result": {
' "line": 1,
' "value": "525 Winchester Blvd"
' }
' },
' {
' "type": "number",
' "score": 0.9805313966503588,
' "text": "525",
' "start_index": 88,
' "end_index": 90,
' "result": {
' "type": "cardinal",
' "value": 525
' }
' },
' {
' "type": "city_locality",
' "score": 0.9805313966503588,
' "text": "San Jose",
' "start_index": 111,
' "end_index": 118,
' "result": {
' "value": "San Jose"
' }
' },
' {
' "type": "state_province",
' "score": 0.9805313966503588,
' "text": "California",
' "start_index": 120,
' "end_index": 129,
' "result": {
' "name": "California",
' "value": "CA"
' }
' },
' {
' "type": "postal_code",
' "score": 0.9519646137063122,
' "text": "95128",
' "start_index": 148,
' "end_index": 152,
' "result": {
' "value": "95128"
' }
' },
' {
' "type": "insurance",
' "score": 0.8530163983409642,
' "text": "insure it for $400",
' "start_index": 180,
' "end_index": 197,
' "result": {
' "value": 400,
' "unit": "USD"
' }
' },
' {
' "type": "insured_value",
' "score": 1,
' "text": "$400",
' "start_index": 194,
' "end_index": 197,
' "result": {
' "unit": "USD",
' "value": 400
' }
' },
' {
' "type": "company",
' "score": 0.9519646137063122,
' "text": "adult signature",
' "start_index": 214,
' "end_index": 228,
' "result": {
' "value": "Adult Signature"
' }
' },
' {
' "type": "delivery_confirmation",
' "score": 0.8530163983409642,
' "text": "adult signature",
' "start_index": 214,
' "end_index": 228,
' "result": {
' "name": "Adult Signature",
' "value": "adult_signature"
' }
' }
' ]
' }
' Sample code for parsing the JSON response...
' Use this online tool to generate parsing code from sample JSON: Generate JSON Parsing Code
Dim Value As Integer
Dim Unit As String
Dim Length As Integer
Dim Width As Integer
Dim Height As Integer
Dim dimensionsUnit As String
Dim Amount As Integer
Dim v_Currency As String
Dim v_type As String
Dim text As String
Dim start_index As Integer
Dim end_index As Integer
Dim resultValue As Integer
Dim resultUnit As String
Dim resultLength As Integer
Dim resultWidth As Integer
Dim resultHeight As Integer
Dim Direction As String
Dim resultName As String
Dim resultCompany_name As String
Dim resultAddress_line1 As String
Dim resultCity_locality As String
Dim resultState_province As String
Dim resultPostal_code As String
Dim resultAddress_residential_indicator As String
Dim Line As Integer
Dim v_Type As String
Dim score As String = jResp.StringOf("score")
Dim Confirmation As String = jResp.StringOf("shipment.confirmation")
Dim Name As String = jResp.StringOf("shipment.ship_to.name")
Dim Company_name As String = jResp.StringOf("shipment.ship_to.company_name")
Dim Address_line1 As String = jResp.StringOf("shipment.ship_to.address_line1")
Dim City_locality As String = jResp.StringOf("shipment.ship_to.city_locality")
Dim State_province As String = jResp.StringOf("shipment.ship_to.state_province")
Dim Postal_code As String = jResp.StringOf("shipment.ship_to.postal_code")
Dim Address_residential_indicator As String = jResp.StringOf("shipment.ship_to.address_residential_indicator")
Dim Ship_fromName As String = jResp.StringOf("shipment.ship_from.name")
Dim Ship_fromCompany_name As String = jResp.StringOf("shipment.ship_from.company_name")
Dim Phone As String = jResp.StringOf("shipment.ship_from.phone")
Dim Ship_fromAddress_line1 As String = jResp.StringOf("shipment.ship_from.address_line1")
Dim Ship_fromCity_locality As String = jResp.StringOf("shipment.ship_from.city_locality")
Dim Ship_fromState_province As String = jResp.StringOf("shipment.ship_from.state_province")
Dim Ship_fromPostal_code As String = jResp.StringOf("shipment.ship_from.postal_code")
Dim Country_code As String = jResp.StringOf("shipment.ship_from.country_code")
Dim Ship_fromAddress_residential_indicator As String = jResp.StringOf("shipment.ship_from.address_residential_indicator")
Dim i As Integer = 0
Dim count_i As Integer = jResp.SizeOfArray("shipment.packages")
While i < count_i
jResp.I = i
Value = jResp.IntOf("shipment.packages[i].weight.value")
Unit = jResp.StringOf("shipment.packages[i].weight.unit")
Length = jResp.IntOf("shipment.packages[i].dimensions.length")
Width = jResp.IntOf("shipment.packages[i].dimensions.width")
Height = jResp.IntOf("shipment.packages[i].dimensions.height")
dimensionsUnit = jResp.StringOf("shipment.packages[i].dimensions.unit")
Amount = jResp.IntOf("shipment.packages[i].insured_value.amount")
v_Currency = jResp.StringOf("shipment.packages[i].insured_value.currency")
i = i + 1
End While
i = 0
count_i = jResp.SizeOfArray("entities")
While i < count_i
jResp.I = i
v_type = jResp.StringOf("entities[i].type")
score = jResp.StringOf("entities[i].score")
text = jResp.StringOf("entities[i].text")
start_index = jResp.IntOf("entities[i].start_index")
end_index = jResp.IntOf("entities[i].end_index")
resultValue = jResp.IntOf("entities[i].result.value")
resultUnit = jResp.StringOf("entities[i].result.unit")
resultLength = jResp.IntOf("entities[i].result.length")
resultWidth = jResp.IntOf("entities[i].result.width")
resultHeight = jResp.IntOf("entities[i].result.height")
Direction = jResp.StringOf("entities[i].result.direction")
resultName = jResp.StringOf("entities[i].result.name")
resultCompany_name = jResp.StringOf("entities[i].result.company_name")
resultAddress_line1 = jResp.StringOf("entities[i].result.address_line1")
resultCity_locality = jResp.StringOf("entities[i].result.city_locality")
resultState_province = jResp.StringOf("entities[i].result.state_province")
resultPostal_code = jResp.StringOf("entities[i].result.postal_code")
resultAddress_residential_indicator = jResp.StringOf("entities[i].result.address_residential_indicator")
Line = jResp.IntOf("entities[i].result.line")
v_Type = jResp.StringOf("entities[i].result.type")
i = i + 1
End While
Curl Command
curl -X POST
-H "API-Key: {{API_KEY}}"
-H "Content-Type: application/json"
-d '{
"text": "I need to ship a 17lb package that’s 36x12x24in. It’s going to Amanda Miller’s house at 525 Winchester Blvd in San Jose California. The zip code is 95128. It\'s really valuable, so insure it for $400 and require an adult signature please.",
"shipment": {
"ship_from": {
"name": "John Doe",
"company_name": "Example Corp.",
"address_line1": "4009 Marathon Blvd",
"city_locality": "Austin",
"state_province": "TX",
"postal_code": "78756",
"country_code": "US",
"phone": "512-555-5555"
}
}
}'
https://api.shipengine.com/v1/shipments/recognize
Postman Collection Item JSON
{
"name": "Parse shipment info w/ known fields",
"event": [
{
"listen": "test",
"script": {
"exec": [
""
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"text\": \"I need to ship a 17lb package that’s 36x12x24in. It’s going to Amanda Miller’s house at 525 Winchester Blvd in San Jose California. The zip code is 95128. It's really valuable, so insure it for $400 and require an adult signature please.\",\n\t\"shipment\": {\n\t\t\"ship_from\": {\n\t\t\t\"name\": \"John Doe\",\n\t\t\t\"company_name\": \"Example Corp.\",\n\t\t\t\"address_line1\": \"4009 Marathon Blvd\",\n\t\t\t\"city_locality\": \"Austin\",\n\t\t\t\"state_province\": \"TX\",\n\t\t\t\"postal_code\": \"78756\",\n\t\t\t\"country_code\": \"US\",\n\t\t\t\"phone\": \"512-555-5555\"\n\t\t}\n\t}\n}"
},
"url": {
"raw": "https://api.shipengine.com/v1/shipments/recognize",
"protocol": "https",
"host": [
"api",
"shipengine",
"com"
],
"path": [
"v1",
"shipments",
"recognize"
]
},
"description": "If you already know some parts of the shipment, you can provide them to ShipEngine, and we'll use those values. These values can also help us recognize other parts of the shipment."
},
"response": [
{
"name": "Parse shipment info w/ known fields",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"text\": \"I need to ship a 17lb package that’s 36x12x24in. It’s going to Amanda Miller’s house at 525 Winchester Blvd in San Jose California. The zip code is 95128. It's really valuable, so insure it for $400 and require an adult signature please.\",\n\t\"shipment\": {\n\t\t\"ship_from\": {\n\t\t\t\"name\": \"John Doe\",\n\t\t\t\"company_name\": \"Example Corp.\",\n\t\t\t\"address_line1\": \"4009 Marathon Blvd\",\n\t\t\t\"city_locality\": \"Austin\",\n\t\t\t\"state_province\": \"TX\",\n\t\t\t\"postal_code\": \"78756\",\n\t\t\t\"country_code\": \"US\",\n\t\t\t\"phone\": \"512-555-5555\"\n\t\t}\n\t}\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "https://api.shipengine.com/v1/shipments/recognize",
"protocol": "https",
"host": [
"api",
"shipengine",
"com"
],
"path": [
"v1",
"shipments",
"recognize"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Date",
"value": "Wed, 18 Sep 2019 17:13:29 GMT"
},
{
"key": "Content-Type",
"value": "application/json; charset=utf-8"
},
{
"key": "Transfer-Encoding",
"value": "chunked"
},
{
"key": "Connection",
"value": "keep-alive"
},
{
"key": "Access-Control-Allow-Origin",
"value": "https://www.shipengine.com"
},
{
"key": "Vary",
"value": "Origin"
},
{
"key": "content-encoding",
"value": "gzip"
}
],
"cookie": [
],
"body": "{\n \"score\": 0.9604458751176728,\n \"shipment\": {\n \"confirmation\": \"adult_signature\",\n \"ship_to\": {\n \"name\": \"Amanda Miller\",\n \"company_name\": \"Adult Signature\",\n \"address_line1\": \"525 Winchester Blvd\",\n \"city_locality\": \"San Jose\",\n \"state_province\": \"CA\",\n \"postal_code\": \"95128\",\n \"address_residential_indicator\": \"yes\"\n },\n \"ship_from\": {\n \"name\": \"John Doe\",\n \"company_name\": \"Example Corp.\",\n \"phone\": \"512-555-5555\",\n \"address_line1\": \"4009 Marathon Blvd\",\n \"city_locality\": \"Austin\",\n \"state_province\": \"TX\",\n \"postal_code\": \"78756\",\n \"country_code\": \"US\",\n \"address_residential_indicator\": \"unknown\"\n },\n \"packages\": [\n {\n \"weight\": {\n \"value\": 17,\n \"unit\": \"pound\"\n },\n \"dimensions\": {\n \"length\": 36,\n \"width\": 12,\n \"height\": 24,\n \"unit\": \"inch\"\n },\n \"insured_value\": {\n \"amount\": 400,\n \"currency\": \"USD\"\n }\n }\n ]\n },\n \"entities\": [\n {\n \"type\": \"weight\",\n \"score\": 0.9805313966503588,\n \"text\": \"17lb\",\n \"start_index\": 17,\n \"end_index\": 20,\n \"result\": {\n \"value\": 17,\n \"unit\": \"pound\"\n }\n },\n {\n \"type\": \"dimensions\",\n \"score\": 1,\n \"text\": \"36x12x24in\",\n \"start_index\": 37,\n \"end_index\": 46,\n \"result\": {\n \"length\": 36,\n \"width\": 12,\n \"height\": 24,\n \"unit\": \"inch\"\n }\n },\n {\n \"type\": \"dimension\",\n \"score\": 0.9805313966503588,\n \"text\": \"24in\",\n \"start_index\": 43,\n \"end_index\": 46,\n \"result\": {\n \"unit\": \"inch\",\n \"value\": 24\n }\n },\n {\n \"type\": \"address\",\n \"score\": 0.9686815805970408,\n \"text\": \"to Amanda Miller’s house at 525 Winchester Blvd in San Jose California. The zip code is 95128. It's really valuable, so insure it for $400 and require an adult signature\",\n \"start_index\": 60,\n \"end_index\": 228,\n \"result\": {\n \"direction\": \"to\",\n \"name\": \"Amanda Miller\",\n \"company_name\": \"Adult Signature\",\n \"address_line1\": \"525 Winchester Blvd\",\n \"city_locality\": \"San Jose\",\n \"state_province\": \"CA\",\n \"postal_code\": \"95128\",\n \"address_residential_indicator\": \"yes\"\n }\n },\n {\n \"type\": \"person\",\n \"score\": 0.9519646137063122,\n \"text\": \"Amanda Miller\",\n \"start_index\": 63,\n \"end_index\": 75,\n \"result\": {\n \"value\": \"Amanda Miller\"\n }\n },\n {\n \"type\": \"residential_indicator\",\n \"score\": 0.9519646137063122,\n \"text\": \"house\",\n \"start_index\": 79,\n \"end_index\": 83,\n \"result\": {\n \"value\": \"yes\"\n }\n },\n {\n \"type\": \"address_line\",\n \"score\": 0.9805313966503588,\n \"text\": \"525 Winchester Blvd\",\n \"start_index\": 88,\n \"end_index\": 106,\n \"result\": {\n \"line\": 1,\n \"value\": \"525 Winchester Blvd\"\n }\n },\n {\n \"type\": \"number\",\n \"score\": 0.9805313966503588,\n \"text\": \"525\",\n \"start_index\": 88,\n \"end_index\": 90,\n \"result\": {\n \"type\": \"cardinal\",\n \"value\": 525\n }\n },\n {\n \"type\": \"city_locality\",\n \"score\": 0.9805313966503588,\n \"text\": \"San Jose\",\n \"start_index\": 111,\n \"end_index\": 118,\n \"result\": {\n \"value\": \"San Jose\"\n }\n },\n {\n \"type\": \"state_province\",\n \"score\": 0.9805313966503588,\n \"text\": \"California\",\n \"start_index\": 120,\n \"end_index\": 129,\n \"result\": {\n \"name\": \"California\",\n \"value\": \"CA\"\n }\n },\n {\n \"type\": \"postal_code\",\n \"score\": 0.9519646137063122,\n \"text\": \"95128\",\n \"start_index\": 148,\n \"end_index\": 152,\n \"result\": {\n \"value\": \"95128\"\n }\n },\n {\n \"type\": \"insurance\",\n \"score\": 0.8530163983409642,\n \"text\": \"insure it for $400\",\n \"start_index\": 180,\n \"end_index\": 197,\n \"result\": {\n \"value\": 400,\n \"unit\": \"USD\"\n }\n },\n {\n \"type\": \"insured_value\",\n \"score\": 1,\n \"text\": \"$400\",\n \"start_index\": 194,\n \"end_index\": 197,\n \"result\": {\n \"unit\": \"USD\",\n \"value\": 400\n }\n },\n {\n \"type\": \"company\",\n \"score\": 0.9519646137063122,\n \"text\": \"adult signature\",\n \"start_index\": 214,\n \"end_index\": 228,\n \"result\": {\n \"value\": \"Adult Signature\"\n }\n },\n {\n \"type\": \"delivery_confirmation\",\n \"score\": 0.8530163983409642,\n \"text\": \"adult signature\",\n \"start_index\": 214,\n \"end_index\": 228,\n \"result\": {\n \"name\": \"Adult Signature\",\n \"value\": \"adult_signature\"\n }\n }\n ]\n}"
}
]
}