2

Windows PhoneJSONから返されたオブジェクトを保存しようとしています。以下のコードから始めましたが、実際にファイルを分離ストレージに書き込む方法や、ファイルを保存する形式 (XML、TXT など) が完全にはわかりません。Azure Mobile Servicesisolated storage

        string offlineData = Path.Combine("WPTracker", "Offline");
        string offlineDataFile = Path.Combine(offlineData, "phones.xml");
        var store = IsolatedStorageFile.GetUserStoreForApplication();

        //Query
        try
        {
            phoneList = await phoneTable
                .Where(PhoneItem => PhoneItem.Publish == true)
                .OrderBy(PhoneItem => PhoneItem.FullName)
                .ToListAsync();
        }
        catch (MobileServiceInvalidOperationException f)
        {
            MessageBox.Show(f.Response.Content.ToString(),
                    string.Format("{0} (HTTP {1})",
                    f.Response.Content,
                    f.Response.StatusCode), MessageBoxButton.OK);
        }

        //Write
        IsolatedStorageFileStream dataFile = null;
        dataFile = store.OpenFile(offlineDataFile, FileMode.Create);
        DataContractSerializer ser = new DataContractSerializer(typeof(IEnumerable<Phones>));

        StringBuilder sb = new StringBuilder();
        StringWriter sw = new StringWriter(sb);
        JsonWriter jWriter = new JsonTextWriter(sw);

        ser.WriteObject(dataFile, phoneList);
        dataFile.Close();   

助言がありますか?:)

編集

XML ではなく JSON ファイルを使用して、Isolated Storage にデータを書き込むことにしました。これは、Azure Mobile Services からのデータが JSON で送信されているためです。XML に変換する必要はありません。以下にリンクがあります!

4

2 に答える 2

1

json を保存する方法とそれを取得する方法の例を次に示します。

public partial class MainPage : PhoneApplicationPage
{
    const string MyDirectory = "offline";
    readonly string _offlineDataFile = Path.Combine(MyDirectory, "phones.json");
    public MainPage()
    {
        InitializeComponent();

        Loaded += MainPage_Loaded;
    }

    async void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        var httpClient = new HttpClient();
        var data = await httpClient.GetStringAsync("http://www.tapanila.net/api/get_recent_posts/");
        var store = IsolatedStorageFile.GetUserStoreForApplication();
        if (!store.DirectoryExists(MyDirectory))
        {
            store.CreateDirectory(MyDirectory);
        }


        using (var fileStream = new IsolatedStorageFileStream(_offlineDataFile, FileMode.Create, store))
        {
            using (var stream = new StreamWriter(fileStream))
            {
                stream.Write(data);
            }
        }
        LoadOffline();
    }

    private void LoadOffline()
    {
        var store = IsolatedStorageFile.GetUserStoreForApplication();

        using (var fileStream = new IsolatedStorageFileStream(_offlineDataFile, FileMode.Open, store))
        {
            using (var stream = new StreamReader(fileStream))
            {
               var data = stream.ReadToEnd();
            }
        }
    }
}
于 2013-08-25T11:48:38.683 に答える
1

JSON オブジェクトを Windows Phone の分離ストレージに書き込む方法に関するガイドは、こちらにあります

于 2013-09-26T16:52:12.243 に答える