[JSON] Wie Splitten?

manniL|

Mitglied
Heyho Leute,

ich wollte fragen wie man diesen JSON Code am besten splitten könnte:
[XML][{"eg_transactionid":"73797","eg_from":"3647063","eg_fromusername":".M\u00f8rris'","eg_to":"604972","eg_tousername":"ManniL","amount":"26","note":"","dateline":"1317131649"},{"eg_transactionid":"73796","eg_from":"604972","eg_fromusername":"ManniL","eg_to":"3493469","eg_tousername":".-ExPeN\u0099","amount":"50","note":"Back 4 Intro","dateline":"1317131002"},{"eg_transactionid":"73586","eg_from":"3288141","eg_fromusername":"Roach'","eg_to":"604972","eg_tousername":"ManniL","amount":"420","note":"","dateline":"1316981450"},{"eg_transactionid":"73470","eg_from":"3575360","eg_fromusername":"ArianaGrande.","eg_to":"604972","eg_tousername":"ManniL","amount":"65","note":"","dateline":"1316951200"},{"eg_transactionid":"73463","eg_from":"3003833","eg_fromusername":"Dustin22","eg_to":"604972","eg_tousername":"ManniL","amount":"35","note":"","dateline":"1316947959"},[/XML]

Ich möchte diesen in ein jTextPane einfügen. Am wichtigsten ist: eg_tousername, amount, eg_fromusername, note.

MfG

manniL
 
Beispiel anhand deines Json-Strings:
Java:
public class App {

	public static void main(String[] args) throws Exception {
		String json = "[{\"eg_transactionid\":\"73797\",\"eg_from\":\"3647063\",\"eg_fromusername\":\".M\u00f8rris'\",\"eg_to\":\"604972\",\"eg_tousername\":\"ManniL\",\"amount\":\"26\",\"note\":\"\",\"dateline\":\"1317131649\"},{\"eg_transactionid\":\"73796\",\"eg_from\":\"604972\",\"eg_fromusername\":\"ManniL\",\"eg_to\":\"3493469\",\"eg_tousername\":\".-ExPeN\u0099\",\"amount\":\"50\",\"note\":\"Back 4 Intro\",\"dateline\":\"1317131002\"},{\"eg_transactionid\":\"73586\",\"eg_from\":\"3288141\",\"eg_fromusername\":\"Roach'\",\"eg_to\":\"604972\",\"eg_tousername\":\"ManniL\",\"amount\":\"420\",\"note\":\"\",\"dateline\":\"1316981450\"},{\"eg_transactionid\":\"73470\",\"eg_from\":\"3575360\",\"eg_fromusername\":\"ArianaGrande.\",\"eg_to\":\"604972\",\"eg_tousername\":\"ManniL\",\"amount\":\"65\",\"note\":\"\",\"dateline\":\"1316951200\"},{\"eg_transactionid\":\"73463\",\"eg_from\":\"3003833\",\"eg_fromusername\":\"Dustin22\",\"eg_to\":\"604972\",\"eg_tousername\":\"ManniL\",\"amount\":\"35\",\"note\":\"\",\"dateline\":\"1316947959\"}]";
		Type collectionType = new TypeToken<Collection<Transaction>>(){}.getType();
		Collection<Transaction> transactions = new Gson().fromJson(json, collectionType);
		for (Transaction transaction : transactions) {
			System.out.println(transaction);
		}
	}

}
class Transaction{
	//evtl. namen + datentyp anpassen TODO
	@SerializedName("eg_transactionid")
	String id;
	@SerializedName("eg_from")
	String from;
	@SerializedName("eg_fromusername")
	String fromuser;
	@SerializedName("eg_to")
	String to;
	@SerializedName("eg_tousername")
	String toUser;
	int amount;
	String note;
	String dateline;
	
	//getter + setter TODO
	
	@Override
	public String toString() {
		return "Transaction [id=" + id + ", from=" + from + ", fromuser="
				+ fromuser + ", to=" + to + ", toUser=" + toUser + ", amount="
				+ amount + ", note=" + note + ", dateline=" + dateline + "]";
	}
}

easy oder? 😀
 
? Wobei gibts da jetzt genau Probleme? Du hast jetzt viele Transaction-Objekte...dort holst du dir eben mit den entsprechenden getter-Methoden (bestenfalls) die Werte und fügst sie in deine Editorpane ein ???:L:bahnhof:
 
Und mit welchen kann ich das anstellen (Wie gesagt, bin mit getter und setter nicht gerade sehr vertraut ^^).

? Du bist mit gettern+settenr nicht vertraut, willst aber eine Anwendung mit grafischer Oberfläche und Parsen von JSON-Strings erstellen? oO

Und du kannst vlt auch anfangen etwas ausführlichere Posts zu schreiben, denn ein
"aber wie füge ich jetzt die Transactiondetails in das Editorpane ein? " darauf kann man jetzt antwortne wie man lustig ist.
Wie soll das Ganze denn im Editorpane dargestellt werden? Wie sieht dein bisheriger Code aus etc.
How to Use Editor Panes and Text Panes (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)
hilft das vlt ?
 
Oh man, sry.

Habe ausversehen als String transaction, statt transactions benutzt und deshalb nur eine Transaktion angezeigt bekommen.

Danke, ist erledigt 🙂
 
Eigentlich funktionier nun Alles, nur das Problem ist folgendes:

Java:
   String json = builder.toString(); 
		     Type collectionType = new TypeToken<Collection<Transaction>>(){}.getType();
		        Collection<Transaction> transactions = new Gson().fromJson(json, collectionType);
		        for (Transaction transaction : transactions) {
				      jTextPane1.setText(transactions.toString());
		        }

		        
		        

		    }
            class Transaction{
		    //evtl. namen + datentyp anpassen TODO
		    @SerializedName("eg_fromusername")
		    String fromuser;
		    int amount;
		    String note;
		    
		    //getter + setter TODO
		    
		    @Override
		    public String toString() {
		        return "User="
		                + fromuser + " Amount=" + amount + "e*G" + " Note=" + note + "\n";
		    
		    
		}
            }

Mit dem Code bekomme ich folgendes Ergebnis:
Code:
[User=XYZ Amount=XYZ Note=XYZ
,Schema wie oben

Wie bekomm ich nun die Brackets und die Kommas weg?
 
Indem du versuchst du verstehen was der Code macht,.
Java:
  for (Transaction transaction : transactions) {
                      jTextPane1.setText(transactions.toString());
                }

jTextPane1.setText(transactions.toString());
-->
jTextPane1.setText(transaction.toString());

(wobei das setText wenig Sinn macht innerhalb einer Schleife.....)
 
Was du suchst ist so etwas wie eine append(anhänge)-Methode!
Die gibts so aber nicht bei einem EditorPane wie bei der Textarea.
Das hat aber alles jetzt nichts mehr mit JSON bzw dem eigentlichen Thema zu tun. Das sind Swing-Grundlagen
Du kannst dir über getDocument das Dokument holen und dann dort insertString aufrufen!
 

Zurück
Oben