简体   繁体   中英

How i generate json schema from mongodb result in java?

I have a simple mongodb query and need the json schema of the result.

    MongoClientURI uri = new MongoClientURI("mongodb://localhost:27017");
    String database = "test_m0001";

    MongoClient mongo = new MongoClient(uri);
    DB db = mongo.getDB(database);
    DBCollection coll = db.getCollection(collectionName);

    try (DBCursor cursor = coll.find().limit(100)) {
        while (cursor.hasNext()) {
            DBObject document = cursor.next();
            System.out.println(document);
            // --> generate json schema for document
        }
    }
    // --> merge json schema for all documents from query

What is the way to generate json schema in java? I looked into the Jackson JSON Schema Modul, but i don't find any answer. I don't have a model class, only the unknown structured documents in the mongodb collection.

Use the below code. it may work

MongoClientURI uri = new MongoClientURI("mongodb://localhost:27017");
    String database = "test_m0001";
    String json="";
    MongoClient mongo = new MongoClient(uri);
    DB db = mongo.getDB(database);
    DBCollection coll = db.getCollection(collectionName);

    try (DBCursor cursor = coll.find().limit(100)) {
        while (cursor.hasNext()) {
            DBObject document = cursor.next();
             StringWriter out = new StringWriter();
             JSONValue.writeJSONString(document.toMap(), out);
             json=out.toString();
             System.out.println(json);
        }
    }

It'll give the schema like :

{
    "_id": 5458 bee9d4ae9599b3ef2458,
    "author": "skc",
    "body": "My Programme",
    "comments": [{
        "author": "SCac",
        "body": "acsac",
        "email": "ascac"
    }, {
        "author": "Sitakant",
        "body": "ZScassc",
        "email": "Chaudhury"
    }],
    "date": Tue Nov 04 17: 26: 25 IST 2014,
    "permalink": "advcjnknl",
    "tags": ["asdcac"],
    "title": "advcjnknl"
} {
    "_id": 5458e a31157fe93550017831,
    "author": "SEEuewe",
    "title": "SkBaSmGaTuELeYUxRUIbFptrcyHKSJ",
    "body": "BGfaVSsHqolIfiwTpPOliWBHjkWlYa",
    "permalink": "skbasmgatueleyuxruibfptrcyhksj",
    "tags": ["tlpOe", "FbcGj", "pQlDf"],
    "date": Tue Nov 04 20: 31: 05 IST 2014,
    "comments": []
} {
    "_id": 5458e a31157fe93550017832,
    "author": "SEEuewe",
    "title": "DwCyowWKVxXUjpZUcFlHrhHpUzoKTh",
    "body": "zwkIAboiGhOejkHjdFuUAufcbyJapf",
    "permalink": "dwcyowwkvxxujpzucflhrhhpuzokth",
    "tags": ["YabrH", "qNUTy", "TmFwV"],
    "date": Tue Nov 04 20: 31: 05 IST 2014,
    "comments": []
} {
    "_id": 5458e a47157fe93550017833,
    "author": "CoPSPVk",
    "title": "NodErjzZvnRSzzWazYWLxGFslYcZDf",
    "body": "AfFGNtskOhVCzjvhQlGkJxGnYLrlVk",
    "permalink": "noderjzzvnrszzwazywlxgfslyczdf",
    "tags": ["IuPiv", "OubeB", "RnvWj"],
    "date": Tue Nov 04 20: 31: 27 IST 2014,
    "comments": []
} {
    "_id": 5458e a47157fe93550017834,
    "author": "CoPSPVk",
    "title": "oMKsjnkSXEtRlUcJEGBJgJbhkHcEzi",
    "body": "IvvcTOxCRpaJAzKoYisaCDKbeZnwsl",
    "permalink": "omksjnksxetrlucjegbjgjbhkhcezi",
    "tags": ["lqQhV", "mabGI", "xtPex"],
    "date": Tue Nov 04 20: 31: 27 IST 2014,
    "comments": []
} {
    "_id": 5458e a9d157fe93550017835,
    "author": "skc",
    "title": "Sitakant's Post",
    "body": "Here is the first Post of Sitakant",
    "permalink": "sitakants_post",
    "tags": ["JavaMongo"],
    "date": Tue Nov 04 20: 32: 53 IST 2014,
    "comments": []
} {
    "_id": 5458e b3e157f67f5ba156fa5,
    "author": "fNrSxIY",
    "title": "ZgjCajXasUObSUxRJvzpTYMtLiCjgH",
    "body": "fjzpLxOFRqVNDHmLwUePLMgSKcXMNA",
    "permalink": "zgjcajxasuobsuxrjvzptymtlicjgh",
    "tags": ["ftXfi", "sdTmw", "JhAtS"],
    "date": Tue Nov 04 20: 35: 34 IST 2014,
    "comments": []
} {
    "_id": 5458e b3e157f67f5ba156fa6,
    "author": "fNrSxIY",
    "title": "ImvrpnvgcvYEvYDqtGGXHVZONCPHbf",
    "body": "aaxGLzdiEPJVSLvrjsZdcwcgllMyLb",
    "permalink": "imvrpnvgcvyevydqtggxhvzoncphbf",
    "tags": ["FVFqj", "FlNNe", "vLmRo"],
    "date": Tue Nov 04 20: 35: 34 IST 2014,
    "comments": []
} {
    "_id": 5458e b48157f67f5ba156fa7,
    "author": "VAPNMXd",
    "title": "TljGJFvDqFQupouzmNFxPKvMnOJoJx",
    "body": "mucDhfFCNeBhpywYaCZhVSWZcVywoW",
    "permalink": "tljgjfvdqfqupouzmnfxpkvmnojojx",
    "tags": ["TqSdG", "IUfWr", "wPjlc"],
    "date": Tue Nov 04 20: 35: 44 IST 2014,
    "comments": []
} {
    "_id": 5458e b48157f67f5ba156fa8,
    "author": "VAPNMXd",
    "title": "LuqwcEFMHcwhbXnPHYDgtnCFxCPdUk",
    "body": "bKBYAfjJjtegKneCnUNVWUnbWcbhqW",
    "permalink": "luqwcefmhcwhbxnphydgtncfxcpduk",
    "tags": ["rXaFH", "hnbho", "RMQlm"],
    "date": Tue Nov 04 20: 35: 44 IST 2014,
    "comments": []
} {
    "_id": 5458e b59157f67f5ba156faa,
    "author": "TNBFjFx",
    "title": "hfYYvpEtlGOFhicEkXmwFGpPhNoUSP",
    "body": "TrShIejThHmjqrvoGpaEWGpPpEgYbK",
    "permalink": "hfyyvpetlgofhicekxmwfgpphnousp",
    "tags": ["OqTEO", "zYNIS", "vUpNa"],
    "date": Tue Nov 04 20: 36: 01 IST 2014,
    "comments": []
} {
    "_id": 5458e b59157f67f5ba156fa9,
    "author": "TNBFjFx",
    "body": "ldmqzeZBTtANiBlmVHTvqZhAeBLmXU",
    "comments": [{
        "author": "cGgBIQXTcrMG",
        "body": "VinmjjhWjyTJ"
    }],
    "date": Tue Nov 04 20: 36: 01 IST 2014,
    "permalink": "kjlxmnkxzznomshgwldtlvfeflmmkf",
    "tags": ["LMfVJ", "PuUxy", "XZfpL"],
    "title": "kJlXMnkxZzNOMSHgWLdTlvFeflmMKf"
} {
    "_id": 5458e b5f157f67f5ba156fac,
    "author": "ofrjKsJ",
    "title": "nskhDjTuGFHXqTwqnLBBFSYcyStwEM",
    "body": "BmSDDQBbKVyjDmRjFJEVrulSBorMFL",
    "permalink": "nskhdjtugfhxqtwqnlbbfsycystwem",
    "tags": ["kvjic", "PnvyS", "ZVQND"],
    "date": Tue Nov 04 20: 36: 07 IST 2014,
    "comments": []
} {
    "_id": 5458e b5f157f67f5ba156fab,
    "author": "ofrjKsJ",
    "body": "TzybDUtlJzkkBqWwaApplHkamFXkpM",
    "comments": [{
        "author": "QHwtRAJCNjvU",
        "body": "gqQIEmTaQsOs"
    }],
    "date": Tue Nov 04 20: 36: 07 IST 2014,
    "permalink": "abfqlmxkkdxiqpjuflvgqcocpxsxms",
    "tags": ["bzkEn", "IdXyE", "nblih"],
    "title": "abFQlmXkKdxiqPjUFLVgQCOcpxsXms"
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM