Hm...: JSON String ist jetzt ein String...

Hi Leute,

ich habe mir ein JSON Object in Java erschaffen, und das hier:

String str=json.toJASONString();

gibt mir sowas:

{"data": [.......,....], ""...... usw.}

Ich möchte str aber so umbauen, dass es kein string ist, so dass ich beispielsweise mit str."data" ein array mniut den werten der spalte data bekomme

könnt ihr mir sagen wie ich das machen könnte? in javaskript habe ich das hinbekommen, aber in java habe ich wohl eine falsche funktion benutzt

  1. for(int i=0; i<Math.round(tabelle.length/10);i++){  
    		list=new JSONArray();  
    		for(int j=0; j<tabelle[0].length;j++){  
    			list.add(tabelle[i][j]);  
    		}  
    		  
    			json.put(header[i],list);  
    

    }

    	Reader.l\_tabelle=null;  
    	this.str=json.toJSONString();  
    

    System.out.println(str);

    ist mein entsprechender code

  2. Hallo,

    könnt ihr mir sagen wie ich das machen könnte? in javaskript habe ich das hinbekommen, aber in java habe ich wohl eine falsche funktion benutzt

    Ich verstehe nicht ganz, was Du vorhast:
    Du wandelst Deine Java-Objekte (also vermutlich irgendwelche Klassen, Arrays, Maps usw.) in einen JSON-String um - soweit, so gut.
    Jetzt möchtest Du aus diesem String wieder die ursprünglichen Objekte herausparsen....warum? Du hast doch die ursprünglichen Objekte noch.

    Wie sieht denn Dein Objekt aus, aus welchem "data" erzeugt wird? Ist dieses Objekt nicht einfach schon ein Array, so wie Du es brauchst?

    1. Hallo,

      könnt ihr mir sagen wie ich das machen könnte? in javaskript habe ich das hinbekommen, aber in java habe ich wohl eine falsche funktion benutzt

      Ich verstehe nicht ganz, was Du vorhast:
      Du wandelst Deine Java-Objekte (also vermutlich irgendwelche Klassen, Arrays, Maps usw.) in einen JSON-String um - soweit, so gut.
      Jetzt möchtest Du aus diesem String wieder die ursprünglichen Objekte herausparsen....warum? Du hast doch die ursprünglichen Objekte noch.

      Wie sieht denn Dein Objekt aus, aus welchem "data" erzeugt wird? Ist dieses Objekt nicht einfach schon ein Array, so wie Du es brauchst?

      jep, ich habe ein doppelArray in welchem alle daten stehen, aber ich würde gerne über einen spaltennamen auf die einzelnen spalten zugreifen - sollte an der laufzeit nicht viel verändern oder?

      1. und ich weiß nicht wie die späteren input dateien aussehen, daher möchte ich im programm mit json arbeiten

      2. Hallo,

        jep, ich habe ein doppelArray in welchem alle daten stehen, aber ich würde gerne über einen spaltennamen auf die einzelnen spalten zugreifen - sollte an der laufzeit nicht viel verändern oder?

        Also, theoretisch kannst Du über das JSON-Objekt wieder an die Sachen ran:

        Sowas (oder so ähnlich) müsste gehen:

        JSONArray data = json.getJSONArray("data");
        if (data != null) {
           for (int i = 0; i < data.length(); i++) {
              System.out.println ("data["+i+"]:"+data.get(i));
           }
        }

        Ein direkter Zugriff wie in JavaScript (json["data"][i] o.ä.) geht aber nicht.

        1. danke für die antwort.

          problem ist jetzt nurnoch, dass getJSONArray für jsonObject nicht definiert ist (sagt mir zumindest eclipse)

          1. danke für die antwort.

            problem ist jetzt nurnoch, dass getJSONArray für jsonObject nicht definiert ist (sagt mir zumindest eclipse)

            Das ist komisch. Benutzt Du die normale JSON-Implementierung von json.org? Da funktioniert das laut JavaDoc.

            Sonst kannst Du's auch so probieren:

            JSONArray data = (JSONArray) json.get("data");

            (Cast nicht vergessen)

            1. danke für die antwort.

              problem ist jetzt nurnoch, dass getJSONArray für jsonObject nicht definiert ist (sagt mir zumindest eclipse)

              Das ist komisch. Benutzt Du die normale JSON-Implementierung von json.org? Da funktioniert das laut JavaDoc.

              Sonst kannst Du's auch so probieren:

              JSONArray data = (JSONArray) json.get("data");

              (Cast nicht vergessen)

              hm, ich benutze:

              import org.json.simple.JSONObject;
              import org.json.simple.JSONArray;

              org.json.JSONObject

              gibt es in der jar die ich heruntergeladen habe garnicht, vielleicht habe ich eine wenigervollständige version gewählt

              1. Hallo,

                gibt es in der jar die ich heruntergeladen habe garnicht, vielleicht habe ich eine wenigervollständige version gewählt

                Joah, Du benutzt JSONSimple, nicht org.JSON. JSONSimple scheint das nicht zu können.

                1. perfekt, danke mit der richtigen jar funktionierts!