0

estoy tratando de acceder a un JsonObject y no lo consigo...

data = this.state.data;
console.log(this.state.data[0]);

la variable data es la que me esta devolviendo el json... lo maximo que puedo acceder es a su indice en '0'..

0:
context: {lang: "es_PA", tz: false, uid: 1, params: {…}}
count: 0
data: {sequence: 10, product_updatable: true, product_uom_qty: 1, qty_delivered: 0, price_unit: 0, …}
domain: []
evalModifiers: ƒ ()
fields: {display_name: {…}, id: {…}, name: {…}, sequence: {…}, invoice_status: {…}, …}
fieldsInfo: {list: {…}}
getContext: ƒ ()
getDomain: ƒ ()
getFieldNames: ƒ ()
id: "sale.order.line_39"
limit: 1
model: "sale.order.line"
offset: -1
ref: "virtual_38"
res_ids: []
specialData: {}
type: "record"
viewType: "list"
evalContext: (...)
get evalContext: ƒ ()
__proto__: Object
length: 1
__proto__: Array(0)

Lo que estoy intentando es acceder a la propiedad 'data' pero lo máximo que pude hacer es con un console.log es 'this.state.data[0]', también probé de estas formas:

console.log(this.state.data[0].data);

console.log(this.state.data[0][data]);

console.log(this.state.data[0].data[]);

pero siempre recibo el mismo error

list_renderer.js:107 Uncaught TypeError: Cannot read property 'data' of undefined

introducir la descripción de la imagen aquí

en la captura de puede ver el resultado de console.log(data)

Hernan Chaparro
  • 411
  • 1
  • 6
  • 25
  • Puedes poner una captura de tu JSON para entenderlo mejor?. Y si puedes pon mas detalle del codigo ya que tu error dice que no puede leer "data" de undefined. Asi que asumo que la variable this.state no existe. – Renzo Telenta Jun 21 '19 at 15:42
  • y si haces un console.log(data) qué te devuelve? console.log(data[0].data) debería de funcionar pero el problema que te está mostrando dice que ni siquiera existe data[0] – Pak Lei Jun 21 '19 at 15:44
  • [JSON !== Objeto Javascript](https://es.stackoverflow.com/questions/164943/cu%c3%a1l-es-la-diferencia-entre-json-y-un-objeto-en-javascript) – Pablo Lozano Jun 21 '19 at 15:44
  • Estimado, faltó colocar cual es el lenguaje de tu servidor, sin eso sería dificil determinar el json que estás recibiendo – harifo Jun 21 '19 at 15:47
  • en data intenta hacer un `console.log(typeof((data))` probablemente sera un string , debes llevar ese string a objeto con el comando JSON.parser(data) – JackNavaRow Jun 21 '19 at 15:58
  • Disculpen que responda recien.. estaba sin internet... agregue una captura de lo que recibo cuando le imprimo mi variable data... el problema es que no puedo acceder a la propiedad data que se ve en la captura... solo puedo acceder al indice 0 – Hernan Chaparro Jun 21 '19 at 18:37

1 Answers1

0

Para acceder a un Json si no está centrado de la forma correcta no accederás, podrías intentar lo siguiente (en mi caso, el lenguaje de server es Vb.net):

var ddata = JSON.Stringify(data.d['0']);
var data = JSON.parse(ddata);

después puedes almacenar la variable de esta manera:

var datos = data['tuIndice'];

Me comentas como te va.

harifo
  • 1,155
  • 5
  • 25
  • creo que solo con esto deveria funcionar var data = JSON.parse(ddata); – Derleguan Jun 21 '19 at 16:24
  • Lo intenté en mi proyecto personal, pero no me funcionó, solo después de darle muchas vueltas logré dar con el resultado y así ajax podía leer mis arreglos (cabe decir que la solución es para vb.net con aspx) – harifo Jun 21 '19 at 17:49
  • Buenas estaba sin internet.. perdon por la demora en responder... la verdad es que imprimir la variable no es un problema... el problema es acceder json que hay dentro... agregue una captura del resultado que obtengo y a donde quiero acceder es a la propiedad data que esta devolviendo el json – Hernan Chaparro Jun 21 '19 at 18:40
  • podrías intentar asignar a una variable este valor : `data['0'].data`, con los ceros entre comillas – harifo Jun 21 '19 at 18:44