将文本转换为json

时间:2011-08-01 12:00:56

标签: asp.net json json.net

我使用Newtonsoft.Json.Net20.dll

HTML

<div id="a" runat="server">

</div>

代码

   string kb = "a";
   string b= Newtonsoft.Json.JsonConvert.SerializeObject(kb).ToString();
   a.InnerText = b;

在iis6上的本地主机中显示"a"

但是在网络秀上

G [!【U ^ӸSYL?qzZŔ?U1k)F] A(ݣ wN Q x . 0 = X y6 ? . r ~; [ t ~ / K z | -WźQ和放大器; 4BQ4oux | wrtLK $ Ms.4ٺ。 |。.sW $_ӗe54ȯ`6mk@ * byap4ZOa,2S jӪ. p n Y&gt; Ӽ͊ n |1~M z r } Qz 9 u i V0-ˑ!/ ST:乙升〜H [4 o' g / E = o 3G ގ} Yߝ| 〜 H Z ; i vrg z m ] Uh Z6&gt; [。 ) er I . . K_yȞF(C v Ha&gt;“s 4 gE G / A׮֓R 1 5MU&LT;ϊzZ jVM d x / \N ա b qo % $ l s?/

This link

使用Newtonsoft.Json时

       Dictionary<string, string> companyProducts = new Dictionary<string, string>();

        companyProducts.Add("product" + item.IdProduct, item.NameProduct.ToString());
        string JsonCompany = JavaScriptConvert.SerializeObject(companyProducts);

此代码工作正常。

this link

当网站上传到互联网时添加新的参考。 足够复制dll到appcode

修改

在gloabal.asax中使用gzip

void Application_PreRequestHandlerExecute(object sender,EventArgs e)     {         HttpApplication app = sender作为HttpApplication;         string acceptEncoding = app.Request.Headers [“Accept-Encoding”];         流prevUncompressedStream = app.Response.Filter;

    if (!(app.Context.CurrentHandler is Page ||
        app.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler") ||
        app.Request["HTTP_X_MICROSOFTAJAX"] != null)
        return;

    if (acceptEncoding == null || acceptEncoding.Length == 0)
        return;

    acceptEncoding = acceptEncoding.ToLower();

    if (acceptEncoding.Contains("gzip") )
    {
        // gzip
        app.Response.Filter = new GZipStream(prevUncompressedStream,
            CompressionMode.Compress);
        app.Response.AppendHeader("Content-Encoding", "gzip");


    }
    else if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
    {
        // defalte
        app.Response.Filter = new DeflateStream(prevUncompressedStream,
            CompressionMode.Compress);
        app.Response.AppendHeader("Content-Encoding", "deflate");
    }
}

2 个答案:

答案 0 :(得分:0)

有可能与JSON转换完全无关的内容是错误的,因为即使div标记在页面源中也没有显示。

在二进制编辑器中分析响应会显示很多UTF-8序列EF BF BD,即FFFD字符{{1}}。当Unicode解码失败时使用此方法,很可能是因为您尝试使用错误的编码进行解码。

答案 1 :(得分:0)

您从该页面获取的文件是一个压缩文件,其中包含一个错误页面,但其中包含例外情况。为什么这样做我不知道。您的全局错误处理程序可能存在错误,导致它在没有正确标题的情况下发送压缩数据...

我假设您现在可以获取文件信息,因为您知道它是什么(我只是右键单击上面的链接然后使用7zip打开文件)。

关键点是:

源文件: c:\ inetpub \ vhosts \ iranfairco.com \ httpdocs \ test.aspx.cs 行: 20

[VerificationException: Operation could destabilize the runtime.]
   Newtonsoft.Json.JsonWriter..cctor() +6

[TypeInitializationException: The type initializer for 'Newtonsoft.Json.JsonWriter' threw an exception.]
   Newtonsoft.Json.JsonWriter..ctor() +0
   Newtonsoft.Json.JsonTextWriter..ctor(TextWriter textWriter) +16
   Newtonsoft.Json.JsonConvert.SerializeObject(Object value, Formatting formatting, JsonSerializerSettings settings) +157
   Newtonsoft.Json.JsonConvert.SerializeObject(Object value) +9
   test.Page_Load(Object sender, EventArgs e) in c:\inetpub\vhosts\iranfairco.com\httpdocs\test.aspx.cs:20
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +50
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627