[Json] Aiuto sulla costruzione di un pattern

di il
6 risposte

[Json] Aiuto sulla costruzione di un pattern

Ho la necessità di costruire un Json con questo schema:

{ "ids" : {
		"id1" : [ 1 , 2 , 3 , 4 , ...],
		
		"id2" : [ 5, 6, 7, 8, ...],
	  }
}
In pratica da un campo "ids", accedo ad una lsita di id, ed ogni id ha associato a sua volta una lista di un qualcosa.
Stavo facendo delle prove con JSONObject e JSONArray, ma sto trovando molta difficoltà, dato che devo poi inserire alcuni dati in MongoDB.

Qualche consiglio?

Grazie

6 Risposte

  • Re: [Json] Aiuto sulla costruzione di un pattern

    Paolovox ha scritto:


    
    { "ids" : {
    		"id1" : [ 1 , 2 , 3 , 4 , ...],
    		
    		"id2" : [ 5, 6, 7, 8, ...],
    	  }
    }
    
    Qualche consiglio?
    Visto così è: un oggetto principale con 1 sola entry il cui valore è un altro oggetto con 2 (o più) entry "id1", "id2" ...... ciascuna che ha come valore un array (di valori interi).
    P.S. "oggetto" e "array" nel senso di JSON, chiaramente

    Se vuoi sapere come costruirla con JSONObject e JSONArray, posso scriverti un abbozzo. Devo solo andare a pescare il javadoc di queste classi perché non ricordo come si usano (è il package org.json se ben ricordo, giusto?)
  • Re: [Json] Aiuto sulla costruzione di un pattern

    Sono andato a vedere il javadoc di JSONObject/JSONArray. JSONObject ha un put() che è molto comodo perché restituisce il this ovvero il JSONObject su cui put è invocato.

    Si può quindi sfruttare il method chaining in modo efficace:
    JSONObject obj = new JSONObject()
        .put("ids", new JSONObject()
            .put("id1", new JSONArray(new int[] { 1, 2, 3, 4 }))
            .put("id2", new JSONArray(new int[] { 5, 6, 7, 8 }))
        );
    Non l'ho provato, l'ho solo scritto al volo.
  • Re: [Json] Aiuto sulla costruzione di un pattern

    Sono riuscito ad ottenere una struttura in questo modo:
    { "ids" : { "165sd6d8v24a86" : ["w12"] } }

    Però adesso in ids è possibile aggiungere altri id? E' un array?

    Ora ho letto provo subito!!!
  • Re: [Json] Aiuto sulla costruzione di un pattern

    Si funziona.
    
    JSONObject obj = new JSONObject()
    				    .put("ids", new JSONObject()
    				        .put(ID_crucy, new JSONArray(new String[] {word}))
    				    	);
    			
    			Document o = Document.parse(obj.toString());
    		
    			Document set = new Document("$set", o);
    			
    			db.updateOne(user, set) != null;
    
    Il problema adesso è per inserire un'altro ID_crucy in Ids, con associato un array di stringhe sempre. Utilizzo MongoDB.
  • Re: [Json] Aiuto sulla costruzione di un pattern

    Paolovox ha scritto:


    Document o = Document.parse(obj.toString());
    Scusa ma se da un modello ad oggetti crei una stringa con il JSON per poi dopo parsarla subito .... non è il massimo/furbo ....

    Purtroppo NON conosco MongoDB ma molti esempi che vedo in rete parlano dell'uso di BasicDBObject, tipo nel MongoDB Driver Quick Tour:
    BasicDBObject doc = new BasicDBObject("name", "MongoDB")
            .append("type", "database")
            .append("count", 1)
            .append("info", new BasicDBObject("x", 203).append("y", 102));
    coll.insert(doc);
  • Re: [Json] Aiuto sulla costruzione di un pattern

    Si grazie mille. Ci sono stato 5 ore e adesso ho risolto e ora posso cominciare davvero
    
    if(getField(username,"ids")){
    			
    			Document o = new Document("ids."+ID_crucy,new ArrayList<String>(
    	        										Arrays.asList(word)));
    			
    			Document set = new Document("$set", o);
    			
    			return users.updateOne(user, set) != null;
    			
    		}
    		else{
    		
    			Document obj = new Document()
    				    .append("ids", new Document()
    				        .put(ID_crucy, new JSONArray(new ArrayList<String>(
    				        		Arrays.asList(word))))
    				    	);
    			
    		
    			Document set = new Document("$set", obj);
    			
    			
    			return users.updateOne(user, set) != null;
    	
    		}
    
Devi accedere o registrarti per scrivere nel forum
6 risposte