无法将 JSON 写入文件(Xamarin C#)

Posted

技术标签:

【中文标题】无法将 JSON 写入文件(Xamarin C#)【英文标题】:Cannot write JSON to file (Xamarin C#) 【发布时间】:2016-08-15 23:35:28 【问题描述】:

我尝试将 JSON 写入这样的文件:

string url2 = "http://papajohn.pp.ua/?mkapi=getProductsByCat&cat_id=83";
JsonValue json = await FetchAsync(url2);

var path = System.Environment.GetFolderPath(
    System.Environment.SpecialFolder.ApplicationData);
var filename = Path.Combine(path, "cache.txt");

File.WriteAllText(filename, json);

public async Task<JsonValue> FetchAsync(string url)

    System.IO.Stream jsonStream;
    JsonValue jsonDoc;

    using (var httpClient = new System.Net.Http.HttpClient())
    
        jsonStream = await httpClient.GetStreamAsync(url);
        jsonDoc = JsonObject.Load(jsonStream);
    

    return jsonDoc;

当我调试时出现错误...

System.InvalidCastException:指定的强制转换无效。

...在这一行:

File.WriteAllText(filename, json);

我的错误在哪里?

【问题讨论】:

【参考方案1】:

从 URL 获取 JsonString 的片段

public async Task<string> FetchAsync(string url)
    
        string jsonString;

        using (var httpClient = new System.Net.Http.HttpClient())
        
            var stream = await httpClient.GetStreamAsync(url);
            StreamReader reader = new StreamReader(stream);
            jsonString = reader.ReadToEnd();
        

        return jsonString;
    

调用上述方法并将字符串保存到本地文件的片段。

string url2 = "http://papajohn.pp.ua/?mkapi=getProductsByCat&cat_id=83";
            var json = await FetchAsync(url2);

            var path = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            var filename = Path.Combine(path, "cache.txt");
            File.WriteAllText(filename,json);

稍后从该文件中读取该 JsonString 并将其转换为 Json 的片段

JsonValue readJson; 
            var jsonString =File.ReadAllText(filename);
            readJson = JsonObject.Parse(jsonString);

【讨论】:

如何将这个文件中的文本显示到控制台? Console.WriteLine(jsonString);

以上是关于无法将 JSON 写入文件(Xamarin C#)的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin 表单将 Json 数组转换为 C# 并返回 JSON 数组

从 JSON 下载信息(Xamarin C#)

xamarin android如何将Java.Lang.Object类型转成C#类型

C# JSON 将文件反序列化为对象列表失败,并将字符串转换为集合错误

无法使用 Xamarin Android/Uwp 在 USB 闪存驱动器中写入文件

Json 到 ListView - 无法将类型转换为 IEnumerable - Xamarin