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, 15: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, 15: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, 16: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 16:10 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 28-07-2010, 16: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 16: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 12:07
Outlook Synchronisation Stonebreaker62 PHP Developer Forum 13 14-08-2008 22:01
JSON: Problem mit autoLoad:{url:file.json} neonfly HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 2 25-07-2008 01:00
Synchronisation von Kalendern auf einem Rechner KEJE Windows (Client/Server) 0 12-03-2004 16:09
MySQL - Synchronisation sEeb SQL / Datenbanken 8 02-12-2003 19: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

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:18 Uhr.