php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > ASP, PERL, CGI, C und alles andere
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


ASP, PERL, CGI, C und alles andere Wolle ma net so sein. Obwohl Perl, ASP, C und TCL zu den minderwertigen Internet-Skriptsprachen zählen, dürfen ab sofort hierzu auch Fragen gestellt werden. ;)

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 28-07-2010, 16:30
PHP_Pan
 Registrierter Benutzer
Links : Onlinestatus : PHP_Pan ist offline
Registriert seit: May 2009
Beiträge: 11
PHP_Pan befindet sich auf einem aufstrebenden Ast
Standard [java] CouchDB und JSON synchronisation

Hallo,

ich habe schon alles versucht und viel ausprobiert komme aber auf keinen
grünen Zweig ... jetzt hoffe ich das mir hier jemand evtl. mit einer oder auch
mehreren Ideen und / oder Tipps helfen kann.

Ich habe mir eine CouchDB installiert und diese auch schon im Einsatz.

Ich kann Documents im JSON Format in der DB ablegen und auch auslesen...
soweit so gut.

Jetzt mein Problem: Ich möchte in der DB immer in der neuesten Revision die
kompletten Daten halten d.h. ich muss wenn ich Daten ablegen bzw. hinzu-
fügen möchte:
1.) JSON Document aus der Datenbank laden (die aktuelle rev.)
2.) Ein neues JSON File mit ergänzenden bzw. zu ändernden Daten laden
-------- jetzt beginnt das Problem ------
3.) Ich laufe rekursiv die JSON Struktur des Originals durch und vergleiche
die Werte mit dem neuen JSON und möchte die Daten natürlich ergänzen.

Und ... das bekomme ich nicht hin, ich benutze jcouchdb API mit svenson mein
Problem sind die verzweigungen von (Bei Java) Map / ArrayList und Strings bzw.
sind nur die Arrays ein Problem da ich dort keinen Key habe der die Werte ein-
deutig identifiziert.

Ich hoffe ihr könnt mein Problem wenigstens etwas nachvollziehen.

Hat wer eine Idee wie ich zwei JSON Dateien vernünftig mergen kann um diese
dann als ein neues Doc komplett in meiner CouchDb abzuspeichern?

Vielen Dank euch
Mit Zitat antworten
  #2 (permalink)  
Alt 28-07-2010, 16:46
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

*move* ins richtige Unterforum und markiert als java. (Wenn das nicht stimmt, bitte melden. Das nächste Mal bitte dazuschreiben, worum es geht.)

JSON-Arrays werden doch als java.util.List geparst, also kannst du doch z. B. einfach über
Code:
list.get(3);
das vierte Element davon ansprechen.

Evtl. hilft dir auch der svenson TypeMapper weiter, um ein bestimmtes Objekt im Array zu finden.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #3 (permalink)  
Alt 28-07-2010, 17:06
PHP_Pan
 Registrierter Benutzer
Links : Onlinestatus : PHP_Pan ist offline
Registriert seit: May 2009
Beiträge: 11
PHP_Pan befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Antwort und den Link,
das hatte ich auch schon angeschaut ist aber nicht das richtige
für mein Problem.

Ich möchte eigentlich einfach zwei JSON Strings / Files / Objekte egal
in welcher Form zu einem Ergebniss d.h. einem JSON irgendwas zusammen-
fügen, dabei ist es mir relativ egal wie das vonstatten gehen kann ich habe es mit
Java versucht mit Rekursion aber bekomme das nicht hin.
Solange nur Maps und Strings da sind (im JSON) geht das aber die Arrays bzw.
Listen dadrin bekomme ich nicht vernünftig abgeglichen.

Evtl hab ich auch nur einen gedanklichen Hänger und brauche nur einen Anstoss in die richtige Richtung

Das hier ist mein Ansatz gewesen aber ich steh auf dem Schlauch ;(
Code:
    public void compare(String key, Object object){
        if(object instanceof Map<?,?>){
            Map<String, Object> newObject = (Map<String, Object>) object;
            Depth tiefe = new Depth(key, 'M');
            depth.add(tiefe);
            this.compareMap(newObject);
        }
        else if(object instanceof ArrayList<?>){
            ArrayList<Object> newObject = (ArrayList<Object>) object;
            Depth tiefe = new Depth(key, 'A');
            depth.add(tiefe);
            this.compareArrayList(newObject);
        }
        else if(object instanceof String){
            String newObject = (String) object;
            this.compareString(newObject);
        }
    }
    
    public void compareMap(Map<String, Object> map){
        for (Map.Entry<String, Object> entry : map.entrySet()){
            compare(entry.getKey(), entry.getValue());
        }
    }
    
    public void compareArrayList(ArrayList<Object> array){
        Iterator<Object> listIterator = array.iterator();
        while(listIterator.hasNext()){
            compare("ARRAY", listIterator.next());
        }
    }    
    
    public void compareString(String string){
        Object container = resultMap;
        Iterator<Depth> depthIterator = depth.iterator();
        while(depthIterator.hasNext()){
            Depth actuallDepth = depthIterator.next();
    
            if(container instanceof Map<?,?>){
                Map<String,Object> realContainer = (Map<String,Object>)container;                
                if(!(realContainer.containsKey(actuallDepth.getKey()) && actuallDepth.getKey() == "ARRAY")){
                    if(actuallDepth.getType() == 'M'){
                        Map<String, Object> newMap = new HashMap<String, Object>();                        
                        realContainer.put(actuallDepth.getKey(), newMap);
                        container = newMap;
                    }
                    else if(actuallDepth.getType() == 'A'){
                        ArrayList<Object> newArray = new ArrayList<Object>();                        
                        realContainer.put(actuallDepth.getKey(), newArray);
                        container = newArray;
                    }
                }                
            }
            else if(container instanceof ArrayList<?>){
                ArrayList<Object> realContainer = (ArrayList<Object>)container;
                if(realContainer.){
                    
                }
                
            }
            
        } // end of while
    } // end of method compareString

Geändert von PHP_Pan (28-07-2010 um 17:10 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 28-07-2010, 17:09
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Ich kann den Code irgendwie nicht nachvollziehen. Normalerweise erwartet man ja von einer Vergleichsmethode irgendeinen Rückgabewert.

Warum arbeitest du mit dem Pseudoschlüssel „ARRAY“ statt irgendetwas à la i++ zu verwenden? Dass du dann deine Arrayelemente nicht mehr wiederfinden kannst, ist kein Wunder
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!

Geändert von AmicaNoctis (28-07-2010 um 17:26 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
couchdb Jayjay SQL / Datenbanken 11 14-04-2010 13:07
Outlook Synchronisation Stonebreaker62 PHP Developer Forum 13 14-08-2008 23:01
JSON: Problem mit autoLoad:{url:file.json} neonfly HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 2 25-07-2008 02:00
Synchronisation von Kalendern auf einem Rechner KEJE Windows (Client/Server) 0 12-03-2004 17:09
MySQL - Synchronisation sEeb SQL / Datenbanken 8 02-12-2003 20:32

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:36 Uhr.