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(基于我的模型)。也许为活塞制作自定义模板会更容易/更好?

4

4 回答 4

0

也许为活塞制作自定义模板会更容易/更好?

同意

于 2010-09-17T23:51:10.940 回答
0

我也同意单独的模板会更好。做所有这些重新格式化客户端似乎很浪费。但这里有另一个想法,也许你可以修改你的 json 以与时间线兼容。这样,您只需生成一次并将其用于两个不同的目的。

您可以将任何您喜欢的属性添加到时间轴 json 格式中。例如,在我的一个时间线上,我有一个属性“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 回答
0

你不需要 jQuery。您所需要的只是 Crockford JSON 解析器。得到它(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 回答