0

私は Android アプリケーションと、Restify.js と MongoJS を使用して Android アプリケーションとの間でデータを保存する Node.js を備えたサーバーを持っています。

今のところ、私は Android から JSONArray を使用しています (ただし、私の場合は、元の lib に基づく json-simple lib です)。JSONObjects を含む JSONArray があります (json-simple lib からも)。

私の場合、 JSONObject は次のとおりです。

{
    "PLACE_NAME":"Paris",
    "COLOR_ID":"2131099684",
    "LIST_DATES":["2014-05-23","2014-05-22","2014-05-21"]
}

ここでの私のポイントは、明らかに同じアーキテクチャを尊重する多くの JSONObjects を持っていることです: 場所名、色 ID、および日付のリストです。

その後、この JSONObjects を JSONArray に格納しています。私が持っているJSONOBjectの数だけループで、そのように単純です:

myJsonArray.add(myJsonObj);

したがって、私の JSONArray の内容は次のとおりです。

[
    {
        "PLACE_NAME":"Paris",
        "COLOR_ID":"2131099684",
        "LIST_DATES":["2014-05-23","2014-05-22","2014-05-21"]
    },

    {
        "PLACE_NAME":"Milan",
        "COLOR_ID":"2131099667",
        "LIST_DATES":["2014-05-14","2014-05-16","2014-05-15"]
    }
    // ... and it goes on and on
]

これまでのところ、そのデータ アーキテクチャは非常にうまく機能していました。なぜなら、ファイルに格納でき、json-simple lib の JSONArray のおかげで、ファイルを簡単に解析できる組み込みのパーサーを使用できるからです。

したがって、ファイルに保存されている JSONArray からすべての JSONObjects を取得したい場合は、次のように簡単です。

final FileReader fr = new FileReader(homeActivitySavesPath.getAbsolutePath());
        final JSONParser parser = new JSONParser();
        this.jsonArray = (JSONArray) parser.parse(fr);
        if (this.jsonArray.size() >= 1) {
            for (int i = 0; i < this.jsonArray.size(); i++) {
                final JSONObject jsonObject = (JSONObject)this.jsonArray.get(i);
                // ... doing some logical code to restore data
                }
 }

私は JavaScript がまったく新しいので、この種の JSONArray を解析するのに苦労しています。

解析方法を理解するために、Android アプリケーションから HTTP 接続を介して送信している POST 要求の内容を出力します。

console.log("リクエストパラメータの内容 -> %s", request.params);

そして、私はそれを取得します:

リクエストパラメータの内容 -> [object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]

明らかに

[オブジェクト オブジェクト]

前述の JSONObject は正しいですか?

では、この種の JSONArray をループできる JavaScript のループをどのように作成しますか?

各 JSONObject を MongoDB コレクションに個別に保存したいと思います。

助けてくれてありがとう!

4

3 に答える 3

0

あなたの答えをありがとう、それは私がうまくいった解決策を見つけるのを助けました.

実際、問題はそれほど難しくはありませんでした。単に、リクエスト パラメータを繰り返し処理する方法を見つけるのに苦労しただけです。

これがソースコードで、非常にうまく機能します。

server.post({path : TPATH, version : '0.0.1'}, saveNewTravel);


function saveNewTravel(req, res, next) {
    res.setHeader('Access-Control-Allow-Origin','*');
    var JSONArray = req.params;
    for (var it = 0; it < req.params.length; it++) {
        var JSONObject = req.params[it];
        var travel = {};
        travel.LIST_DATES = JSONObject.LIST_DATES;
        travel.PLACE_NAME = JSONObject.PLACE_NAME;
        travel.COLOR_ID = JSONObject.COLOR_ID;
        travels.save(travel, function(error, success) {
            if (success) {
                res.send(201, success);
                return next();
            } else
                return next(error);
        });
    }
}

使い方Restify.jsMongoJS簡単でとても良いです^^

皆さん、ありがとうございました !!

PS : 副次的な質問です。もしよろしければ、どの場合、私のバージョンを定義することserver.postが役立つか、または必要とされますか? このガイドは、サーバーのセットアップに役立ちました: https://www.openshift.com/blogs/day-27-restify-build-correct-rest-web-services-in-nodejs

于 2014-05-20T08:19:14.953 に答える
0

ええ、オブジェクトを取得しています。このようにオブジェクトの属性を読み取る必要があります

jsonArray.PLACE_NAME
jsonArray.COLOR_ID

その後、値が表示されます。

これを試してください。これが問題の解決に役立つことを願っています。

于 2014-05-19T15:38:49.443 に答える