2017-03-01 7 views
0

ich bin this Tutorial zum Übergeben json an jrxml. meine Dummy-JSON-Datei Erfolg analysieren in gut aussehende Bericht.java ireport übergeben json als Ausdruck

aber ich habe Probleme beim Übergeben von JSON-Code an jrxml. in this Tutorial gibt es Konfiguration wie Bild unten

datasource

ich versuchte json wie diese

Map<String,Object> params = new HashMap<String,Object>(); 

String sPath = "/reports/master_standar_test_kertas.jrxml"; 
URL uReport = this.getClass().getResource(sPath); 

String sJson = "{\"parameter\": { \"status\":\"success\" },\"data\":[{\"kode\":\"001\",\"title\":\"ENAMEL\"}]}"; 
System.out.println((new JSONObject(sJson))); 
InputStream is = new ByteArrayInputStream(sJson.getBytes()); 
JsonDataSource source = new JsonDataSource(is); 

params.put(JsonQueryExecuterFactory.JSON_SOURCE, is); 

JasperReport jr = JasperCompileManager.compileReport(uReport.getPath()); 
JasperPrint jpPrint = JasperFillManager.fillReport(jr, params,source); 
JasperViewer jpView = new JasperViewer(jpPrint); 

zu vorbei, aber ich habe Fehler

net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression for source text: $P{net.sf.jasperreports.json.source} 

meine Frage:

  1. Ich bin sicher, dass mein Code falsch ist, aber ich kenne nicht den genauen falschen Code
  2. Ich möchte wirklich verstehen, wie jasperreport funktioniert, aber ich bin neu in Java, was gibt es ein Tutorial, das ich lesen kann ...?

Antwort

1
  1. Ich würde versuchen, die JsonQueryExecuterFactory.JSON_INPUT_STREAM Parameter stattdessen zu setzen, wie es genau zu sein scheint, was Sie brauchen. Der JsonQueryExecuterFactory.JSON_SOURCE Parameter kann nur sein:

    • eine Ressource auf dem Classpath
    • eine Datei aus dem Dateisystem, mit einem absoluten oder relativen Pfad
    • eine URL
  2. Die meisten Ressourcen für Sich mit JasperReports vertraut zu machen, kann auf der Jaspersoft Community Website gefunden werden. können Sie nützlich finden die:

+0

i eigentlich nur 3 Monate erstellen Desktop-Anwendungen Java verwenden, geben Sie mir bitte Beispiel Code mit JsonQueryExecuterFactory.JSON_INPUT_STREAM, nur kleines Beispiel, bitte ...? – yuda

+0

Ihr Code sollte es tun, aber nur mit 'JsonQueryExecuterFactory.JSON_INPUT_STREAM' anstelle von' JsonQueryExecuterFactory.JSON_SOURCE' – Narcis

0

Für das Problem, das ich habe, ich meine eigene Lösung, vielleicht jemand die Lösung benötigen zu .

dieser Code

params.put(JsonQueryExecuterFactory.JSON_SOURCE, is); 

i mit

ersetzt
params.put(JsonQueryExecuterFactory.JSON_SOURCE, "/path/to/file.json"); 

oder mit HTTP-Server Antwort ersetzt

params.put(JsonQueryExecuterFactory.JSON_SOURCE, "htttp://localhost:12345/data.json");