2014-08-28 63 views
3

下面是莫名其妙地产生我的JSON数据现有的JSON数据:如何澄清使用asp.net

[ 
    { 
    id: "1926d769-319b-41ec-8bba-deabbcc44992", 
    start: "2014-09-02T11:00:00", 
    end: "2014-09-02T12:00:00", 
    title: ""ATR" Recieved by Lender - First", 
    body: ""ATR" Recieved by Lender - First", 
    color: "", 
    editable: false, 
    officeEvent: false, 
    allDay: false 
    }, 
    { 
    id: "37e65cc0-a44a-460d-acc6-f8847fcdc384", 
    start: "2014-08-04T12:00:00", 
    end: "2014-08-04T13:00:00", 
    title: "Sign Disclosures", 
    body: "Sign Disclosures", 
    color: "", 
    editable: false, 
    officeEvent: false, 
    allDay: false 
    } 
] 

的第一项冠军包含双引号(“”),从而使JSON数据显示错误。现在我怎么能在下面的同一时间从整个JSON数据转义这个引用。

标题: “\” ATR \ “贷款人:收到 - 第一”

我怎么能在Asp.Net C#实现这一目标?

+0

JSON是如何产生的?你创造了它,还是来自第三方? – 2014-08-28 15:55:23

+1

@布莱恩罗杰斯,是的,它来自第三方。我在foreach循环中使用title.replace(“\”“,”\\\“”)来转义标题和正文。但是,没有任何foreach,有没有什么捷径。 – Arif 2014-08-28 16:57:13

+5

如果来自第三方,您应该与他们联系,让他们知道他们正在创建无效的JSON并要求他们修复它。根据规范,JSON字符串中的引号必须转义(参见[JSON.org](http://www.json.org/))。如果没有办法做到这一点,那么你现在正在做你正在做的事,以解决它。如果JSON无效,则标准JSON解析器将发出错误,如本例中所示。 – 2014-08-28 17:03:56

回答

0

布赖恩是正确的,你真的需要与供应商谈话,并让他们修复他们的数据/代码。对于不使用循环的工作,尽管可以使用字符串替换方法来清理JOSN。

string cleanJson = source.toString(); 
string cleanJson = cleanJson.Replace("title: \"\"", "title: \"\\\""); 
string cleanJson = cleanJson.Replace("body: \"\"", "title: \"\\\""); 
return convertBackToJson(cleanJson); 

如果您不想使用循环出于性能原因,这可能不是一个更好的解决方案。如果您希望加快进程速度,可以考虑尝试将JSON分解成若干块,如果可以隔离虚假记录,请清理它们并将它们附加到最终输出中。