22

私はJavaでこのjsonオブジェクトを作成しようとしていますが、苦労しています:

{
    "notification": {
        "message": "test",
        "sound": "sounds/alarmsound.wav",
        "target": {
            "apps": [
                {
                    "id": "app_id",
                    "platforms": [
                        "ios"
                    ]
                }
            ]
        }
    },
    "access_token": "access_token"
}

誰かがJavaでそれを作成する方法についての支援をいただければ幸いです!

4

6 に答える 6

44

JSON オブジェクトの作成を本当に検討している場合、Jackson には必要なものがすべて揃っています。

final JsonNodeFactory factory = JsonNodeFactory.instance;

final ObjectNode node = factory.objectNode();

final ObjectNode child = factory.objectNode(); // the child

child.put("message", "test");

// etc etc

// and then:

node.set("notification", child); // node.put(String, ObjectNode) has been deprecated

結果nodeは でありObjectNode、これは を継承します。これは、 のJsonNodeすべてのJsonNode機能を取得することを意味します。

  • 賢明な.toString()表現;
  • ナビゲーション機能 ( .get(), .path() -- GSON には、.path()欠落しているノードをモデル化できないため、これに相当するものはありません。特に、そうではありません);
  • MissingNodeそこにないノードを表し、NullNodeJSON null を表すため、これらはすべて継承しますJsonNode(GSON にはこれに相当するものはありません。また、 のすべてJsonNodeのナビゲーション メソッドは、そのようなノードでも使用できます)。
  • そしてもちろん.equals()/ .hashCode().
于 2013-01-08T04:27:52.467 に答える
5

これを解決するために必要な情報を提供してくれた @fge に感謝します。

この問題を解決するために私がしたことは次のとおりです。

JsonNodeFactory nodeFactory = new JsonNodeFactory();

        ObjectNode pushContent = nodeFactory.objectNode();
        ObjectNode notification = nodeFactory.objectNode();
        ObjectNode appsObj = nodeFactory.objectNode();
        ObjectNode target = nodeFactory.objectNode();

        ArrayNode apps = nodeFactory.arrayNode();
        ArrayNode platforms = nodeFactory.arrayNode();

        platforms.add("ios");

        appsObj.put("id","app_id");
        appsObj.put("platforms",platforms);

        apps.add(appsObj);

        notification.put("message",filledForm.field("text").value());
        notification.put("sound","sounds/alarmsound.wav");
        notification.put("target", target);

        target.put("apps",apps);

        pushContent.put("notification", notification);
        pushContent.put("access_token","access_token");

        if(!filledForm.field("usage").value().isEmpty()) {
            target.put("usage",filledForm.field("usage").value());
        }

        if(!filledForm.field("latitude").value().isEmpty() && !filledForm.field("longitude").value().isEmpty() && !filledForm.field("radius").value().isEmpty()) {
            target.put("latitude",filledForm.field("latitude").value());
            target.put("longitude",filledForm.field("longitude").value());
            target.put("radius",filledForm.field("radius").value());
        }

pushContent を印刷すると、作成に必要な正確な json オブジェクトが出力されます。

これが他の誰かにも役立つことを願っています!

リッチ

于 2013-01-08T08:24:26.377 に答える
2

そのオブジェクトを表すクラスを作成し、それを JSON に変換したいと思います。その JSON インターフェースを別の場所で入手したと思いますが、Java からそれを作成する方法がたくさんあります。

class ToJson{
    private Notification notification;
    private String access_token;
}

public class Notification{
    private String message;
    private String sound;
    private Target target;
}

public class Target{
    private Apps apps[];
}

public class Apps{
    private String id;
    private Plataform plataforms[];
}

public class Plataform{
    privte String ios;
}

次に、任意の lib/framework を使用して、塗りつぶされた ToJson オブジェクトを JSON に変換します。

于 2013-01-08T05:37:21.567 に答える
0

ここで役立つさまざまなライブラリがあります。

これらのライブラリでより具体的な問題が発生した場合は、それらを投稿する必要があります。

于 2013-01-08T04:21:53.483 に答える