2017-05-22 4 views
0

Also, ich habe ein JSON-Objekt wie folgt aus:Zugriff auf verschachtelte Json-Objekteigenschaften in einem Array in reaktiven nativen Listenansichten?

[ 
    { 
    "stock": 13, 
    "update_stamp": "2017-05-22T20:19:21Z", 
    "article": { 
    "sku": "0761523", 
    "bar_code": "000-111111011", 
    "category": null, 
    "internal_code": "11" 
    } 
}, 
{ 
    "stock": 3, 
    "update_stamp": "2017-05-22T19:38:03Z", 
    "article": { 
    "sku": "715491", 
    "bar_code": "000-111111012", 
    "category": null, 
    "internal_code": "12" 
    } 
} 
] 

Was fällt mir ein, logisch, wenn ich versuche article.sku in einer renderRow Funktion zuzugreifen, ist so etwas wie dies zu tun:

_renderRow(obj: Obj) { 
    return(
     <View style={styles.article}> 
      <Text numberOfLines={1} style={styles.articleText}> 
       {obj.article.sku} 
      </Text> 
     </View> 
    ) 
} 

aber ich bekomme Fehler:

undefined is not an object (evaluating 'obj.article.sku') 

Wenn ich schreibe etwas wie folgt aus:

_renderRow(obj: Obj) { 
    return(
     <View style={styles.article}> 
      <Text numberOfLines={1} style={styles.articleText}> 
       {obj.stock} 
      </Text> 
     </View> 
    ) 
} 

Es funktioniert völlig in Ordnung.

Alles, was ich vermisse?

+0

Überprüfen Sie, ob jedes einzelne Element in diesem Array einen Artikelschlüssel hat, der ein Obj ist. –

Antwort

0

Also für mich klingt es wie Obj ist, was Sie erwarten, dass jeder Ihrer Json-Objekte zu sein. Ich denke, du solltest obj ausdrücken, um zu sehen, was es eigentlich ist, um eine bessere Idee zu bekommen, mit was du es zu tun hast.

Ich denke, in Anbetracht dessen, was Sie präsentiert haben, ist das Obj nicht leer. Es ist wahrscheinlich ein Objekt und deshalb können Sie mit obj.stock darauf zugreifen. Möglicherweise ist einer der Artikelwerte Ihres Objekts jedoch null oder der Schlüssel ist einfach nicht vorhanden. Also, wenn Sie obj.article tun, würde es null zurückgeben, und Sie operieren sku auf das machen eine null.sku, die eine illegale Operation ist.

+0

Drucken von obj.article.sku ist in Ordnung, aber Problem ist ein Obj zu RenderRow-Funktion übergeben und versuchen, dort JSON-Werte zugreifen. –

+0

Sie haben also ein Array von Objekten und Sie möchten RenderRow für jedes Objekt korrekt aufrufen? Sie schleifen wahrscheinlich und rufen renderRow für jedes Element auf. Was ich sagen will, ist ein console.log in der renderRow-Funktion zu machen und uns alle Ausdrucke jedes Objekts anzeigen zu lassen. Wie ich schon sagte, vielleicht hat eines der Objekte einen Artikelwert von Null. – Jeff

Verwandte Themen