从JSON中删除转义字符和quoatation标记

时间:2018-06-18 14:50:09

标签: c# json

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

"{\"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"

我在这里使用此方法来jsonify包含来自sql数据库的数据的数据表:

        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删除最后一个字符:

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

它忽略了引号。 我也尝试了几种替换来摆脱转义字符,但似乎没有任何工作或它也删除了字符串其余部分的引号,我不想要(只是第一个和最后一次)。

我完全迷失在这里,并希望得到任何帮助。

编辑:当我运行时:

                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}"

这有点接近我想要的,但我仍然需要围绕值的引号,我仍然需要在开始和结束时删除quoation标记。

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

1 个答案:

答案 0 :(得分:0)

我已经弄清楚了。

我确实需要对我的JSON做一些小改动,就像Amy说的那样。然后我将方法的返回类型从字符串切换到Stream并通过以下方式运行JSON:

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

现在输出终于没有转义符,并且第一个/最后一个引号也消失了,可能是因为它不再是一个字符串。在这里找到它: WCF web service returning json format data