【问题标题】:Getting Json Output from Byte Array从字节数组获取 Json 输出
【发布时间】:2013-05-26 14:58:18
【问题描述】:

我刚刚开始了一个关于 WCF 的新项目,老实说,我对这方面的知识非常陌生。

所以我要做的是打开一个存储在我电脑中的文件(例如 word、pdf 等)并以 JSON 格式在网页中显示内容。我将文件转换为字节数组并尝试显示Stream。当我这样做时,它要求我打开文件或保存它。我不希望这样 - 我只想在调用该方法时将文件的内容显示在我的本地主机上。

这是我所拥有的:

public string GetRawFile()
    {
        string file = @"C:\.....\TestFile.pdf";
        byte[] rawFile = File.ReadAllBytes(file);


        //Stream stream = new MemoryStream(rawFile);
        //DataContractJsonSerializer obj = newDataContractJsonSerializer(typeof(string));
        //string result = obj.ReadObject(stream).ToString();

        //Deserializing
        MemoryStream stream = new MemoryStream();
        BinaryFormatter binForm = new BinaryFormatter();
        stream.Write(rawFile, 0, rawFile.Length);

        stream.Seek(0, SeekOrigin.Begin);
        Object obj = (Object) binForm.Deserialize(stream);

        System.Web.Script.Serialization.JavaScriptSerializer xyz = new System.Web.Script.Serialization.JavaScriptSerializer();
        string ejson = xyz.Serialize(obj);

        WebOperationContext.Current.OutgoingRequest.ContentType = "text/json";
        return ejson;
    }

我正在尝试返回一个字符串,但它不起作用,但是当我只返回流时,它会弹出“openwith”消息。

我还应该在我的数据合同上使用GETPOST。我在 C# 中使用 REST。

【问题讨论】:

    标签: c# json wcf rest serialization


    【解决方案1】:

    我假设您的文件实际上包含 json。如果是这种情况,请执行此操作;

    string file = File.ReadAllText("C:\path\to\file.extension");
    

    你让问题变得比它需要的复杂得多。只需读取文件并将其数据作为字符串返回。我认为您想将 GET 用于 http 方法。一般来说,如果您要添加新内容,您都会使用 post。例如,如果用户请求会导致应用程序将一些数据写入文件或数据库,那么您通常会使用 POST 作为 http 方法。如果他们只是请求数据,您几乎总是使用 GET。

    【讨论】:

    • 我只想导入任何文件并在 Json 中获取输出....这是否可能....我正在尝试打开常规 pdf,这就是我的原因将文件转换为流。
    • @Arka 为了做到这一点,你必须反序列化你的 pdf,而字节数组不足以做到这一点。该格式是专有的,因此您不能将其作为纯文本阅读。为了以 json 格式读取文件,它实际上必须包含有效的 json。否则,您需要在代码中构造一些对象,然后您可以将它们序列化为 json 字符串,但您不能只从任何随机事物中获取字节并将它们写为 json。
    • 非常感谢您的回复...您知道如何将 PDF 或 word 文件反序列化为 Json 吗?任何帮助将不胜感激
    • @Arka 你不能直接。首先,您需要读取文件并将其数据存储在某个对象中,然后将对象序列化为 json。为什么您仍然尝试将 PDF 或 Word 文档存储为 json?这些对我来说似乎不是兼容的格式。
    猜你喜欢
    • 2017-02-13
    • 2018-07-04
    • 2019-04-05
    • 2013-03-15
    • 2018-10-10
    • 2019-06-19
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    相关资源
    最近更新 更多