1

有効な JSON データセットがあります。

[
    {
        "date": "2008-02-04 19:30:00", 
        "authors": [
            {
                "first_name": "Nassim Nicholas", 
                "last_name": "Taleb"
            }
        ], 
        "icon": "djlongnow_media/seminar_icons/salt-020080204-taleb.jpg", 
        "slug": "the-future-has-always-been-crazier-than-we-thought", 
        "title": "The Future Has Always Been Crazier Than We Thought"
    }, 
    {
        "date": "2008-01-11 19:30:00", 
        "authors": [
            {
                "first_name": "Paul", 
                "last_name": "Saffo"
            }
        ], 
        "icon": "djlongnow_media/seminar_icons/salt-020080111-saffo.jpg", 
        "slug": "embracing-uncertainty-the-secret-to-effective-forecasting", 
        "title": "Embracing Uncertainty: the secret to effective forecasting"
    }, 
    {
        "date": "2007-12-14 19:30:00", 
        "authors": [
            {
                "first_name": "Jon", 
                "last_name": "Ippolito"
            }, 
            {
                "first_name": "Joline", 
                "last_name": "Blais"
            }
        ], 
        "icon": "djlongnow_media/seminar_icons/salt-020071214-blais-ippolito.jpg", 
        "slug": "at-the-edge-of-art", 
        "title": "At the Edge of Art"
    },
]

そして、それを SIMILE Timeline js プロジェクト ( http://www.simile-widgets.org/timeline/ )にフィードしたいと思います。これは、次の形式の JSON を想定しています。

[
        {
            "title" : "The Dark Knight",
            "start" : "2008-07-18",
            "link" : "http://www.imdb.com/title/tt0468569/",
            "icon" : "http://m001.blogmatrix.net/silk_icons/film.png",
            "description" : "Why So Serious?"
        },
        {
            "title" : "The X-Files: I Want to Believe",
            "start" : "2008-12-02",
            "link" : "http://www.imdb.com/title/tt0443701/",
            "icon" : "http://m001.blogmatrix.net/silk_icons/film.png",
            "description" : "Six years after the events of The X-Files series finale, former FBI agent Doctor Dana Scully is now a staff physician at Our Lady of Sorrows, a Catholic hospital, and treating a boy named Christian who has Sandhoff disease, a terminal brain condition. FBI agent Drummy arrives to ask Scully's help in locating Fox Mulder, the fugitive former head of the X-Files division, and says they will call off its manhunt for him if he will help investigate the disappearances of several women, including young FBI agent Monica Banan. Scully agrees and convinces Mulder who is living in a nearby small home, bearded and clipping newspaper articles about the paranormal to help, despite Mulder's initial misgivings that this is an FBI trick to capture him."
        },
        {
            "title" : "Hancock",
            "start" : "2008-11-25",
            "link" : "http://www.imdb.com/title/tt0448157/",
            "icon" : "http://m001.blogmatrix.net/silk_icons/film.png",
            "description" : "John Hancock (Will Smith) is an unhappy and reluctant superhero who is living in his own world. For some unknown reason, Hancock is depressed and has started drinking very heavily. He has saved many lives in Los Angeles over the years, but in doing so, he has no regards for damaging buildings, trains, roads, cars, or anything that gets in his way of getting the job done. The last time he captured several criminals, it cost the city $9 million to fix the damages. The public has had enough of Hancock, and they want him to stop or go to another city. Then one day, Hancock saves the life of Ray Embrey (Jason Bateman) from being run over by a train. Ray is a public relations executive who now can go home to his wife and child, because Hancock was there. Ray owes Hancock his life, and he makes it his mission to change his superhero's image and have the public cheering him. Ray's wife, Mary (Charlize Theron), believes Hancock cannot be fixed, and she doesn't want Ray to be hurt. Douglas Young (the-movie-guy)"
        }
]

私が理解していることは、JS (またはおそらく jQuery のような簡単にするためのフレームワーク) を使用して、最初にこのファイルを解析し (SIMILE ウィジェット/コードを描画する前に)、SIMILE の形式に合わせてデータを再フォーマットする必要があることです。

問題は、これを行う方法がわからないということです。この変換はブラウザで行われますか? どこでどのように呼び出すのですか (最終的な JSON 結果)?

django-piston を使用して JSON を生成します (モデルに基づいて)。おそらく、Piston のカスタム テンプレートを作成する方が簡単/優れているでしょうか?

4

4 に答える 4

0

jQueryは必要ありません。必要なのはCrockfordJSONパーサーだけです。入手してください(http://www.json.org/)。これにより、JSON応答が有効なJavaScriptオブジェクトに変換されます。オブジェクトを好きなように操作し、他のオブジェクトを作成してから、同じスクリプトを使用してJSON文字列を生成します。

すでにjQueryをお持ちの場合は、作業がはるかに楽になります。$ .getJSONを使用してAJAXリクエストを作成し、同時にJSONファイルを解析します。データを送信するには、データ型が「JSON」のAJAX関数を使用し、新しいJSONオブジェクトをデータ化します。

于 2010-09-18T00:17:08.493 に答える
0
var _forMattedJsonForTimeLine=[];
jQuery.each(_yourCurrentUnFormattedJson,function(index,item){
      var _entry={};
      _entry.title=item.title;
      _entry.start=item.date;
      _entry.link=link// i dint found this in your json
      _entry.icon=item.icon;
      _entry.description=item.slug;

      _forMattedJsonForTimeLine.push(_entry);
});

your json is ready here
于 2010-09-18T06:05:09.750 に答える
0

おそらく、Piston のカスタム テンプレートを作成する方が簡単/優れているでしょうか?

同意した

于 2010-09-17T23:51:10.940 に答える
0

別のテンプレートの方が良いという意見にも同意します。クライアント側ですべての再フォーマットを行うのは無駄に思えます。しかし、ここに別の考えがあります。タイムラインと互換性があるようにjsonを変更できるかもしれません。そうすれば、一度生成するだけで、2 つの別々の目的に使用できます。

タイムラインの json 形式に好きなプロパティを追加できます。たとえば、タイムラインの 1 つで、リンクされた Google マップを駆動するプロパティ「mapKeys」を取得しました。Timeline は、期待するキーを使用して必要な値を見つける限り、追加のプロパティに悩まされることはありません。

[
        {
            "title" : "The Dark Knight",
            "start" : "2008-07-18",
            "link" : "http://www.imdb.com/title/tt0468569/",
            "icon" : "http://m001.blogmatrix.net/silk_icons/film.png",
            "description" : "Why So Serious?",
            "mapKey" : "Gotham City",
            "authors" : {
                "first_name": "Bruce", 
                "last_name": "Wayne"
             },
            "whateverOtherPropertyYouLike" : "foo, bar, baz"
        }, etc.
于 2010-09-18T18:42:35.543 に答える