Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
5 years ago

API REST - GET - DataFormat.Error: encontramos un carácter inesperado en la entrada JSON.

¡Hola!

Tengo algunos problemas para conectarme a SERVICENOW API REST.

Cuando hago una llamada con 1500 líneas (sysparm_limit-1500) puedo obtener los datos de esta llamada correctamente, pero si sumo el número de líneas sobre 2000 recibo este error: DataFormat.Error: Encontramos un carácter inesperado en la entrada JSON.

¿Existe una limitación con el número de líneas recuperadas o un problema de análisis?

let
    Fonte = Json.Document(Web.Contents("https://YYYYYYYYYYYYYYYYY.service-now.com//api//now//table//u_fcu?sysparm_limit=2000"), 65001)
in
    Fonte

kendiaka09n_1-1608053755291.png

13 Replies

  • No @kendiaka09n

    No estoy familiarizado con esa API, pero esperaría que haya un límite a la cantidad de datos que se pueden devolver en una solicitud. Puede consultar la documentación de la API para averiguarlo.

    https://docs.servicenow.com/bundle/geneva-servicenow-platform/page/integrate/inbound_rest/concept/c_RESTAPI.html

    Ese error que recibe normalmente indica que JSON no se ha devuelto, normalmente es un mensaje de error HTML.

    BTW sólo necesita single/ en la URL, por ejemplo, /api/now/table

    saludos

    Phil

    • Anonymous's avatar
      Anonymous
      Not applicable

      No @PhilipTreacy!

      ¡Gracias por su tiempo!

      Usando el sysparm_limit obtengo los números de línea predeterminados de 10.000 y mi consulta no puede ir más allá de las líneas 1990.

      sysparm_limit Límite para aplicar en la paginación. El valor predeterminado es 10.000.
      Los valores de sysparm_limit inusualmente grandes pueden afectar al rendimiento del sistema.

      https://docs.servicenow.com/bundle/geneva-servicenow-platform/page/integrate/inbound_rest/reference/r_TableAPI-GET.html

      Cuando intento obtener la información a través de python (solicitud) obtengo el contenido completo. Mirando la Posición señalada por el mensaje de error PBI no puedo encontrar nada malo, como un ?

      encabezados á "Aceptar":"aplicación/xml"
      response - requests.get(url, auth-(user, pwd), headers-headers)

      Gracias por el consejo "/"!

      saludos

      Su

  • mahoneypat's avatar
    mahoneypat
    Microsoft Employee

    ¿Qué es el "65001" en la función Json.Document? ¿Obtiene un documento json con solo la parte Web.Contents? Vea lo que obtiene y luego ábralo con la función correcta. Es posible que deba especificar el formato json en la llamada web.

    saludos

    palmadita

    • Anonymous's avatar
      Anonymous
      Not applicable

      hola @mahoneypat !
      Gracias por su tiempo y ayuda!

      El "65001" está relacionado con la codificación UTF-8. Pero no es necesario debido al método GET de Servicenow trae automáticamente la codificación UTF-8.

      Cuando intenté obtener los datos solo a través de Web.Content, devuelve un documento JSON que no puedo analizar después de él.

      Analizar por texto, devuelve una cantidad limitada de datos y Parse by JSON devuelve el problema con DataFormat.Error.

      saludos

      Su

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hay @PhilipTreacy

      Hmmm, lo intentaré.

      Pero, ¿es seguro comprobar en este sitio web? Una vez que voy a probar algunos datos confidenciales de una empresa....

  • mahoneypat's avatar
    mahoneypat
    Microsoft Employee

    Le sugerí separar El Web.Contents de Json.Document para solucionar problemas y asegurarse de que está recibiendo una respuesta Web. Ahora que lo está, puede solucionar los problemas de la parte Json. Si envolverlo en Json.Document no da como resultado Listas o Registros para expandir, intente lo siguiente:

    - Deje su paso con sólo Web.Contents( ) y debería ver un icono de documento con "JSON" en él (o algún otro texto)

    - Haga clic derecho en ese icono y elija texto en lugar de JSON para que pueda ver el texto real devuelto

    - ver si es valor JSON, y, si es necesario, pegarlo aquí para que otros puedan ayudar

    saludos

    palmadita

    • Anonymous's avatar
      Anonymous
      Not applicable

      No @mahoneypat

      Intenté tu enfoque, pero desafortunadamente, me devuelve sólo unas pocas líneas. Menos de lo esperado.
      Mientras que mi posición de error es 35.523.241, la posición máxima que obtengo de la tabla de copia de PBI es 35.844 y la última línea recupera solo una parte de las columnas seleccionadas.

  • Anonymous's avatar
    Anonymous
    Not applicable

    ¡Hola!

    Encontramos una solución alternativa para este problema de análisis. Usamos el sysparm_fields para obtener solo las columnas que se necesitaban. De esta manera podríamos recuperar todas las líneas de la tabla.

    Dejar
    Source á Json.Document(Web.Contents("https: //YYYYYYYYYYYYY.service-now. com/api/now/ table/tablename?sysparm_fields-column1,column2,column3,column4,column5"))
    En
    Fuente

    No se encontró ningún problema al obtener todas las columnas en grupos separados.

    Desafortunadamente, todavía se desconoce por qué devuelve un problema de análisis cuando intento recuperar todas las columnas sin especificarlas.

  • Hola

    Me gustaría proponerle una solución alternativa, es posible que desee probar nuestra aplicación: Power BI Connector for ServiceNow:

    Tenemos unas prácticas guías de usuario y administración para su conveniencia, pero no dude en comunicarse con el equipo de soporte en [email protected] si necesita ayuda.

    Gracias.

    Saludos

    Antón

    ===

    Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

  • Esta es la única publicación que he encontrado con este error específico. Tengo el mismo problema con una llamada REST a SharePoint. Ya estoy usando una instrucción "select" para obtener solo columnas específicas. ¿Alguna idea?

    • gregoliveira's avatar
      gregoliveira
      Helper II

      Hi,

       

      Try to limit the number of rows retrieved by the request. This was the problem that I had with the ServiceNow API and there is a huge possible to be your problem too.

       

      **

      Google Translate

       

      Intente limitar el número de filas recuperadas por la solicitud. Este fue el problema que tuve con la API de ServiceNow y existe una gran posibilidad de que también sea su problema.