Neue Probleme mit JSON bzw. parsen eines Wertes

Hi Leute,
vor einiger Zeit wurde mir in diesem Thread schon prima geholfen:

Jetzt kommt ein kleines neues Problem dazu. Es gibt einen neuen Wert, der so blöd verschachtelt ist, dass ich nicht weiß, wie ich den parsen kann.
Hier der Quellcode, der Wert, den ich benötige, ist das value von “_order_number”: “_order_number”,“value”:“10003”

[{"id":15733,"parent_id":0,"status":"on-hold","currency":"EUR","version":"5.7.1","prices_include_tax":true,"date_created":"2021-09-29T09:55:58","date_modified":"2021-09-29T09:55:58","discount_total":"0.00","discount_tax":"0.00","shipping_total":"0.00","shipping_tax":"0.00","cart_tax":"1.05","total":"16.00","total_tax":"1.05","customer_id":1,"order_key":"wc_order_7m6Pnqa07qmtB","billing":{"first_name":"Stefan","last_name":"Mustermann","company":"","address_1":"dsfsdf 22","address_2":"","city":"ghfghfgh","state":"","postcode":"66666","country":"DE","email":"shopping2@lall.net","phone":"","title":"1"},"shipping":{"first_name":"Stefan","last_name":"Mustermann","company":"","address_1":"dsfsdf 22","address_2":"","city":"ghfghfgh","state":"","postcode":"66666","country":"DE","phone":"","title":"1"},"payment_method":"bacs","payment_method_title":"Bank\u00fcberweisung","transaction_id":"","customer_ip_address":"82.207.237.30","customer_user_agent":"Mozilla\/5.0 (Macintosh; Intel Mac OS X 10.13; rv:92.0) Gecko\/20100101 Firefox\/92.0","created_via":"checkout","customer_note":"","date_completed":null,"date_paid":null,"cart_hash":"8fa84e35e20ae206cfa71fc93dfe0034","number":"10003","meta_data":[{"id":162223,"key":"_us_in_content_ids","value":""},{"id":162224,"key":"_us_grid_filter_atts","value":""},{"id":162257,"key":"_billing_title","value":"1"},{"id":162258,"key":"_shipping_title","value":"1"},{"id":162259,"key":"_shipping_address_type","value":""},{"id":162260,"key":"is_vat_exempt","value":"no"},{"id":162261,"key":"_additional_costs_include_tax","value":"yes"},{"id":162262,"key":"_shipping_dhl_address_type","value":"regular"},{"id":162263,"key":"_order_number","value":"10003"},{"id":162268,"key":"_new_order_email_sent","value":"true"}],"line_items":[{"id":1104,"name":"Befreie Dich selbst mit der Macht Deiner Worte","product_id":15592,"variation_id":0,"quantity":1,"tax_class":"ermaessigter-steuersatz","subtotal":"14.95","subtotal_tax":"1.05","total":"14.95","total_tax":"1.05","taxes":[{"id":2,"total":"1.046729","subtotal":"1.046729"}],"meta_data":[{"id":11410,"key":"_unit","value":"St\u00fcck","display_key":"_unit","display_value":"St\u00fcck"},{"id":11411,"key":"_unit_base","value":"","display_key":"_unit_base","display_value":""},{"id":11412,"key":"_unit_product","value":"","display_key":"_unit_product","display_value":""},{"id":11413,"key":"_item_desc","value":"","display_key":"_item_desc","display_value":""},{"id":11414,"key":"_delivery_time","value":"Lieferzeit: 2-5 Tage","display_key":"_delivery_time","display_value":"Lieferzeit: 2-5 Tage"},{"id":11415,"key":"_min_age","value":"","display_key":"_min_age","display_value":""},{"id":11416,"key":"_woo_custom_stock_status_email_txt","value":"sofort lieferbar","display_key":"Stock Status","display_value":"sofort lieferbar"},{"id":11430,"key":"_reduced_stock","value":"1","display_key":"_reduced_stock","display_value":"1"}],"sku":"5048","price":14.953271,"parent_name":null}],"tax_lines":[{"id":1106,"rate_code":"DE-MWST.-2","rate_id":2,"label":"MwSt.","compound":false,"tax_total":"1.05","shipping_tax_total":"0.00","rate_percent":7,"meta_data":[]}],"shipping_lines":[{"id":1105,"method_title":"Kostenlose Lieferung","method_id":"free_shipping","instance_id":"3","total":"0.00","total_tax":"0.00","taxes":[],"meta_data":[{"id":11422,"key":"Positionen","value":"Befreie Dich selbst mit der Macht Deiner Worte × 1","display_key":"Positionen","display_value":"Befreie Dich selbst mit der Macht Deiner Worte × 1"},{"id":11423,"key":"_split_taxes","value":[],"display_key":"_split_taxes","display_value":[]}]}],"fee_lines":[],"coupon_lines":[],"refunds":[],"date_created_gmt":"2021-09-29T07:55:58","date_modified_gmt":"2021-09-29T07:55:58","date_completed_gmt":null,"date_paid_gmt":null,"shipments":[{"id":202,"date_created":"2021-09-29T09:55:58","date_created_gmt":"2021-09-29T07:55:58","date_sent":null,"date_sent_gmt":null,"est_delivery_date":null,"est_delivery_date_gmt":null,"total":"16.00","weight":"280","status":"processing","tracking_id":"","tracking_url":"","shipping_provider":"","dimensions":{"length":"22.9","width":"32.4","height":"2"},"address":{"first_name":"Stefan","last_name":"Mustermann","company":"","address_1":"dsfsdf 22","address_2":"","city":"ghfghfgh","state":"","postcode":"66666","country":"DE","phone":"","title":"1","email":"shopping2@lall.net"},"items":[{"id":337,"name":"Befreie Dich selbst mit der Macht Deiner Worte","order_item_id":1104,"product_id":15592,"quantity":1}]}],"currency_symbol":"\u20ac","parcel_delivery_opted_in":"","direct_debit":{"holder":"","iban":"","bic":"","mandate_id":""},"_links":{"self":[{"href":"https:\/\/das-goldene-tor.de\/wp-json\/wc\/v3\/orders\/15733"}],"collection":[{"href":"https:\/\/das-goldene-tor.de\/wp-json\/wc\/v3\/orders"}],"customer":[{"href":"https:\/\/das-goldene-tor.de\/wp-json\/wc\/v3\/customers\/1"}]}}]

Vielen Dank für eure Hilfe

Stefan

Einfach durch deine Child Einträge durch iterieren bis du gefunden hast was du suchst :-).


var json As New JSONItem(kJSON)

For i As Integer = 0 To json.LastRowIndex
  
  Var curItem As JSONItem = json.ChildAt(i)
  Var metaData As JSONItem = curItem.Lookup("meta_data", Nil)
  
  If metaData <> Nil Then
    
    For j As Integer = 0 To metaData.LastRowIndex
      
      Var curMetaEntry As JSONItem = metaData.ChildAt(j)
      Var curKey As String = curMetaEntry.Lookup("key", "")
      
      If curKey = "_order_number" Then
        
        MessageBox curMetaEntry.Lookup("value", "")
        Return
        
      End If
      
    Next j
    
  End If
  
Next i

Danke.

Bekomme es jedoch nicht zum Laufen, braucht man dazu eine neuere Version als Xojo 2017 R3.

LG Stefan

Einfach mal in die Language Reference unter JSONItem schauen.
Damals hieß bspw. “ChildAt” noch “Child”.
Statt “LastRowIndex” → json.Count - 1
Der Rest sollte denke ich gleich sein.

Ok, danke, ich gehe das später nochmal an!

Läuft jetzt, klasse!

LG Stefan