2013-06-24 40 views
0

1)我需要在Windows Phone应用程序上下载大型JSON文件,我想在下载时处理JSON,因为否则应用程序会一直下载JSON,这可能需要长达10秒或更长,有没有办法做到这一点?我已经搜索了2天,现在似乎没有任何工作...在C#中加载大型JSON文件

2)有没有简单的方法来检查此JSON文件中的新项目?它在线托管,因此我必须检查是否有新项目(节点)添加到文件中。

+0

StreamReader ..... –

+0

@newStackExchangeInstance:您知道任何流式JSON解析器吗? – SLaks

回答

1
  1. 只要问一个服务器如果有新的东西,让他送你实际的新东西。它将少得多,在线路上传输的数据少得多,而且处理和可视化(如果需要的话)的时间更少。

  2. 或者创建JSON请求,获取数据包中的数据,并在每个数据包到达后处理它。下载需要更长的时间,因为在处理过程中您会阻止请求,但它会向用户提供反馈。你可以利用这一点,通过在本地JS堆栈中推送数据包并继续请求另一个数据包,同时处理已经可用的数据包。但它变得相当复杂的情况下,imo,因为这足够简单(在我看来)的东西。

+0

询问服务器是没有选择我害怕,它是一个像JSON文件一样的rss-feed,每次添加新项目时都会更新(自2008年起),我只能够获得该JSON文件,其他字符... – Schaemelhout

+0

恐怕在这一点上你没有多少选择,然后在客户端以一种聪明的方式来管理它。 – Tigran

+0

这就是我所害怕的,并且希望这里的任何人在我面前遇到过这个特殊的问题,并且对我有任何提示。 – Schaemelhout

0

1.如果你想通过一个JSON对象逐渐解析,看看JSON.NET的JsonReader

要知道,在Windows Phone,你不能从UI线程上的网络流中提取,但你可以,如果你把你的工作提高到一个后台线程(看看BackgroundWorker)。

2.如果您的Web服务器支持它,您可以传递一个If-None-Match/If-Modified-Since标头并接受304响应以指示没有任何变化。

但是,这只能匹配整个HTTP请求。如果你需要更精细的细节,你可以在你的请求分割成:

一)请根据该ID和最后修改日期

b)要求ID列表(由应用决定的细节清单修改日期)