Rally Restaurable Consulta Lanzamiento Malformedjsonexception
Pregunta
Estoy tratando de consultar algo de la base de datos del mitin.En este momento, solo estoy tratando de asegurarme de que pueda pasar inicialmente.Este código:
//create rallyrest object
RallyRestApi restApi = new RallyRestApi(new URI(hostname), username, password);
restApi.setApplicationName("QueryTest");
restApi.setWsapiVersion("v2.0");
restApi.setApplicationVersion("1.1");
System.out.println("1: So far, so good -- RallyRestApi object created");
try {
//create query request
String type = "HierarchicalRequirement";
QueryRequest qreq = new QueryRequest(type);
System.out.println("2: Still going -- Query Request Created");
//set fetch, filter, and project
qreq.setFetch(new Fetch("Name","FormattedID"));
qreq.setQueryFilter(new QueryFilter("Name", "contains", "freight"));
qreq.setProject(projectNumber);
System.out.println("3: Going strong -- Fetch, Filter, and Project set");
//create response from query********Blows up
QueryResponse resp = restApi.query(qreq);
System.out.println("4: We made it!");
} catch (Exception e) {
System.out.println("Error: " + e);
}
finally {
restApi.close();
}
}
me da este error:
Exception in thread "main" com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 22
at com.google.gson.JsonParser.parse(JsonParser.java:65)
at com.google.gson.JsonParser.parse(JsonParser.java:45)
at com.rallydev.rest.response.Response.<init>(Response.java:25)
at com.rallydev.rest.response.QueryResponse.<init>(QueryResponse.java:18)
at com.rallydev.rest.RallyRestApi.query(RallyRestApi.java:227)
at RQuery.main(RQuery.java:65)
Caused by: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 22
at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1505)
at com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1386)
at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:531)
at com.google.gson.stream.JsonReader.peek(JsonReader.java:414)
at com.google.gson.JsonParser.parse(JsonParser.java:60)
... 5 more
Java Result: 1
¿Podría alguien explicar por qué está sucediendo esto?¿Está mal mi código?Si necesito hacer lo que sugiere el error y configura JSON.lenient (VERDADERO), dame instrucciones sobre cómo hacerlo con mi código.
¡Gracias!
Solución
Tu código funciona para mí. No veo nada malo con el código. Pruebe diferentes consultas, tal vez hay algunos personajes adicionales. Consulte esta publicación - Se mencionó un caso con los caracteres de NUL (\ 0). Tal vez necesite establecer lo verdadero, pero no sé cómo hacerlo: no hay acceso directo a él cuando trabaje con Rally QueryResponse.
La razón para probar una consulta diferente es que hay dos factores locales: su entorno Java y sus datos. Malformedjsonexception indica que Bad JSON que apunta a los datos. Solo está buscando "NOMBRE" y "FORMATTEDID", así que es probable que el culpable esté en algún lugar en el nombre. Pruebe una consulta diferente, por ejemplo. (FormattedID = US123)
, pero elige la historia que no contiene "flete" en el nombre. Establezca que al menos una consulta en particular funciona, indicará aún más que el problema está relacionado con los datos, y no el entorno.
Siguiente, intente la misma consulta (nombre contiene "flete") directamente en ws api < / a>, que es un documento interactivo donde se pueden probar las consultas. Un equivalente a la consulta en su código también se puede pegar en el navegador:
https://rally1.rallydev.com/slm/webservice/v2.0/hierarchicalrequirement?workspace=https://rally1.rallydev.com/slm/webservice/v2.0/workspace/123&query=(Name%20contains%20%22fraight%22)&start=1&pagesize=200&fetch=Name,FormattedID
Asegúrese de reemplazar 123 en /workspace/123
con el OID válido de su espacio de trabajo.
qreq.setpagesize (200); qreq.setstart (2); qreq.setlimit (200);