从JSON删除转义字符和定号 [英] Remove escape characters and quoatation marks from JSON

查看:469
本文介绍了从JSON删除转义字符和定号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何从这样的json字符串中删除转义字符以及第一个和最后一个引号:

How do I remove escape characters and the first and last quotation mark from a json string like this one:

"{\"SagsNr\":5,\"Titel\":\"Nr. Boulevard 76, st. tv. 8900 Randers C\",\"EjendomBeskrivelse\":\"Boulevardgården i Randers er nyrenoveret med 90 lejemål fordelt på Nr. Boulevard, Mariagervej og Ny vinkelvej \u000d\u000a \u000d\u000aIndenfor en radius af 1-2 km ligger både Randers City med flere hundrede specialforretninger, Regionshospitalet Randers, offentlige transportmuligheder, skoler, idrætsanlæg og stadion\u000d\u000a \u000d\u000aEjendommen har lukket, grønt gårdmiljø med bl.a. legeplads. Der er vaskeri i ejendommen\u000d\u000a \u000d\u000aAlle lejligheder råder over eget kælderrum\u000d\u000a \u000d\u000aBoulevardgården har nyrenoveret tag (2010)\u000d\u000a \u000d\u000aHusdyr ikke tilladt\u000d\u000a\",\"Areal\":54.00,\"Leje\":3711.00,\"LejemaalBeskrivelse\":\"Mindre lejlighed på 54 kvm i Boulevardgården\u000d\u000aLejligheden har to værelser og er beliggende i stueplan\u000d\u000aDer hører kælderrum til lejligheden\u000d\u000aLejligheden hører til ejendom med lukket, grønt gårdmiljø med bl.a. legeplads. Der er moderne betalingsvaskeri i ejendommen.\u000d\u000a\u000d\u000a\",\"Adresse1\":\"Nr. Boulevard 76, st. tv.\",\"Rum\":2,\"Etage\":0,\"PostNr\":\"8900\",\"ByNavn\":\"Randers C\",\"AntalBilleder\":11,\"AntalProspekter\":0,\"AntalKort\":1"

我在这里使用此方法对包含来自sql数据库的数据的数据表进行json加密

I am using this method here to jsonify an datatable that contains data from an sql database:

        private string GetJson(DataTable dt)
    {
        System.Web.Script.Serialization.JavaScriptSerializer Jserializer = new System.Web.Script.Serialization.JavaScriptSerializer();
        List<Dictionary<string, object>> rowsList = new List<Dictionary<string, object>>();
        Dictionary<string, object> row = null;

        foreach (DataRow dr in dt.Rows)
        {
            row = new Dictionary<string, object>();
            foreach (DataColumn col in dt.Columns)
            {
                row.Add(col.ColumnName, dr[col]);
            }

            rowsList.Add(row);
        }
        return Jserializer.Serialize(rowsList);
    }

如果我只是通过f.eks删除了最后一个字符:

If I just remove the last character via f.eks:

json = json.Substring(0, json.Length - 2);

它忽略引号. 我还尝试了几种替换操作来摆脱转义符,但似乎没有任何效果,或者它也删除了字符串中其余部分的引号,而这是我所不希望的(仅是第一个和最后一个).

It ignores the quotation mark. I've also tried several kinds of replace to get rid of the escape characters but nothing seems to work OR it also removes quotation marks in the rest of the string, which I don't want(just the very first and very last).

我在这里完全迷失了,不胜感激.

I am completely lost here and would appreciate any kind of help.

运行此命令时:

                return json.Replace("\r\n", "")
      .Replace("\r", "")
      .Replace("\n", "")
      .Replace("\\", "")
      .Replace("\"", "");

我明白了:

"{SagsNr:5,Titel:Nr. Boulevard 76, st. tv. 8900 Randers C,EjendomBeskrivelse:Boulevardgården i Randers er nyrenoveret med 90 lejemål fordelt på Nr. Boulevard, Mariagervej og Ny vinkelvej rn rnIndenfor en radius af 1-2 km ligger både Randers City med flere hundrede specialforretninger, Regionshospitalet Randers, offentlige transportmuligheder, skoler, idrætsanlæg og stadionrn rnEjendommen har lukket, grønt gårdmiljø med bl.a. legeplads. Der er vaskeri i ejendommenrn rnAlle lejligheder råder over eget kælderrumrn rnBoulevardgården har nyrenoveret tag (2010)rn rnHusdyr ikke tilladtrn,Areal:54.00,Leje:3711.00,LejemaalBeskrivelse:Mindre lejlighed på 54 kvm i BoulevardgårdenrnLejligheden har to værelser og er beliggende i stueplanrnDer hører kælderrum til lejlighedenrnLejligheden hører til ejendom med lukket, grønt gårdmiljø med bl.a. legeplads. Der er moderne betalingsvaskeri i ejendommen.rnrn,Adresse1:Nr. Boulevard 76, st. tv.,Rum:2,Etage:0,PostNr:8900,ByNavn:Randers C,AntalBilleder:11,AntalProspekter:0,AntalKort:1}"

这有点接近我想要的内容,但是我仍然需要在值周围加上引号,并且仍然需要在开头和结尾处使用引号.

Which is kinda close to what I want, but I still need the quotation marks around the values and I still need to quoation marks at the start and end removed.

Edit3: 不替换字符: https://i.imgur.com/xtzd0jt.png 替换字符后: https://i.imgur.com/gjthbiM.png

Without replacing characters: https://i.imgur.com/xtzd0jt.png After replacing characters: https://i.imgur.com/gjthbiM.png

推荐答案

我知道了.

我确实确实需要对我的JSON进行一些小的更改,例如Amy所说的.然后,我将方法的返回类型从字符串切换为Stream,并通过以下方法运行JSON:

I did indeed need to do some small changes to my JSON like Amy said. Then I switched the return type of the method from string to Stream and ran the JSON through this:

WebOperationContext.Current.OutgoingResponse.ContentType = "application/json; charset=utf-8";
            return new MemoryStream(Encoding.UTF8.GetBytes(json));

现在输出最终没有转义字符,并且第一个/最后一个引号也消失了,可能是因为它不再是字符串了.在这里找到它: WCF Web服务返回json格式数据

Now the output is finally without escape characters and the first/last quotation marks are gone too, probably because it's no longer a string. Found it here: WCF web service returning json format data

这篇关于从JSON删除转义字符和定号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆