2017-09-17 4 views
0

// bitte den Code zu finden unter .I nicht in der Lage ist Objektkarte in jsonwie konvertieren Liste der Karte zu json in java

@GET 
@Produces(MediaType.APPLICATION_JSON) 
@Path("readCsv") 
public @ResponseBody String readCsvservice(@Context ServletContext servletContext) throws Exception { 

    String csvFile = System.getProperty("user.dir") + "/resources/branch_profitability.csv"; 
    String line = ""; 
    String cvsSplitBy = ","; 

    HashMap<String, String> branch = new HashMap<>(); 

    List<Map> branchList = new ArrayList<>(); 

    try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) { 
     br.readLine(); 
     while ((line = br.readLine()) != null) { 

      // use comma as separator 
      String[] country = line.split(cvsSplitBy); 
      branch.put("Zone", country[0]); 
      branch.put("State", country[1]); 
      branch.put("City", country[2]); 
      branch.put("Location", country[3]); 
      branch.put("brach", country[4]); 
      branch.put("Employee", country[5]); 
      branch.put("EOP", country[6]); 
      branchList.add(branch); 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    ObjectMapper objectMapper = new ObjectMapper(); 

    // try1 
    String jsonMap = objectMapper.writeValueAsString(branchList); 

    // try2 
    String json = new Gson().toJson(branchList); 

    return json; 

} 
+0

Was ist das Problem? – petul

+0

Ich habe try1 und try2 kommentiert das ich dann auch verwendet habe ich bin nicht in der Lage zu konvertieren Liste in JSON – Tejal

+0

Es sollte funktionieren, geben Sie eine Reihe von JSON-Objekte. Ist es nicht in dem Format, das Sie erwarten würden? Hast du eine Ausnahme? – petul

Antwort

0

Es sieht zu konvertieren, wie Sie HashMap<String, String> branch = new HashMap<>(); einmal außerhalb der while-Schleife zu erstellen, aber Sie müssen für jede Zeile in CSV neue HashMap erstellen.

// HashMap<String, String> branch = new HashMap<>(); <= remove this line 

List<Map> branchList = new ArrayList<>(); 

try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) { 
    br.readLine(); 
    while ((line = br.readLine()) != null) { 

     HashMap<String, String> branch = new HashMap<>(); //<= Add this line 

     // fill new map... 

     branchList.add(branch); 
    } 

} catch (IOException e) { 
    e.printStackTrace(); 
} 

Aber Ihr Code soll eigentlich json des letzten Datensatz in csv nach der Anzahl der Zeilen multipliziert produzieren, wenn Sie also nichts in json bekommen haben (nicht einmal []) bedeutet dies, dass etwas mit Ihrer Datei falsch ist Parsing. Edit: Nicht der Fall nach comment

+0

wird nicht in JSON konvertiert .... Folgende Ausgabe bekomme ich nach dem Drucken map-Objekt [{Employee = 59.0, Zone = Ost, State = WestBengal, EOP = 419376.0, City = Siliguri, Brach = NanakComplex, Standort = SevokeRoad}, {Employer = 59.0, Zone = Ost, State = WestBengal, EOP = 419376.0, City = Siliguri, Brach = NanakComplex, Location = SevokeRoad}] – Tejal

+0

@Tejal wenn du nie JSON bekommst Antwort, aber 100% sicher, dass dieser Ressourcenpfad trigered wird, als es ist wahrscheinlich etwas falsch mit Ihrem Maven/Gradle Abhängigkeiten. Hier ist ein Demo-Projekt https://github.com/varren/jackson-jersey-json es funktioniert gut für mich 'localhost: 9998/readCsv' Ausgabe ist (csv ist Zufallsdaten)' [{"Employee": "NanakComplex", "Zone": "59.0", "Staat": "Ost", "EOP": "SevokeRoad", "Stadt": "WestBengal", "Brach": "Siliguri", "Ort": "419376.0"}, { "Mitarbeiter": "NanakComplex", "Zone": "60.0", "Staat": "West", "EOP": "SevokeRoad", "Stadt": "WestBengal", "Brach": "Siliguri", "Standort ":" 123456.0 "}]' – varren

+0

@Tejal Können Sie darauf hinweisen, welche Variable Sie genau drucken? Wie ich schon sagte, ich habe den Verdacht, dass Sie die falsche drucken – petul

Verwandte Themen