2016-07-26 2 views
0

저는 클라이언트 측에서 백엔드와 C#으로 PHP를 사용하고 있습니다.C# 문자열의 r n JSON 오류

dynamic answer = JsonConvert.DeserializeObject(resultHttpPost); 
string body = answer.body; 

하지만 오류를 받고 있어요 : 내가 JSON에 서버에서 여러 메시지를받을 때 그래서 나는 이렇게이 때문에

Symbol of new line is in constant

나는 multilines 메시지를 사용할 수 없습니다.

나는 다음과 같이 시도하고 그래서 그것이 작동되도록 어떻게 하나

resultHttpPost = resultHttpPost.Replace("\\n", "\n").Replace("\\r", "\r").Replace("\\t", "\t"); 
    project.Variables["var_dump"].Value = resultHttpPost; 
dynamic answer = JsonConvert.DeserializeObject(resultHttpPost); 

를 작동하지 않았다? JSON에 대한

예 :

{"status":"response_ok","message":{"body":"Hi test,\r\n\r\ntesting it, lorem ipsum lorem ipsumlorem ipsumlorem ipsumlorem ipsum.\r\n\r\nSignature","id":1015,"id_thread":741},"id_thread":741} 
+0

exaple 'resultHttpPost' 값을 보여줍니다. – BWA

+0

{ "status": "response_ok", "message": { "body": "안녕하세요, 테스트, \ r \ n \ r \ n 테스트 중 ... \ r \ n \ r \ nSignature" , "id": 1015, "id_thread": 741}, "id_thread": 741} – Nelex

+0

@Nelex 왜 당신은 newlines *를 모두 바꾸려고합니까? C#, Json.NET 및 Json 자체가 잘 줄 바꿈을 처리 할 수 ​​있습니다. 또한 게시 한 코드는별로 의미가 없습니다 - 어디에서 '\\ r'을 찾았습니까? 아마도 디버거가 줄 바꿈을 표시하는 것에 혼란 스러울 것입니까? 원시 문자열을 역 직렬화 해 보았습니까? –

답변

1

예제 코드 :

using System; 
using System.Collections.Generic; 
using Newtonsoft.Json; 

public class Message 
{ 
    public string body { get; set; } 
    public int id { get; set; } 
    public int id_thread { get; set; } 
} 

public class RootObject 
{ 
    public string status { get; set; } 
    public Message message { get; set; } 
    public int id_thread { get; set; } 
} 

public class Program 
{ 
    static public void Main() 
    { 
     string j = "{\"status\":\"response_ok\",\"message\":{\"body\":\"Hi test,\r\n\r\ntesting it, lorem ipsum lorem ipsumlorem ipsumlorem ipsumlorem ipsum.\r\n\r\nSignature\",\"id\":1015,\"id_thread\":741},\"id_thread\":741} "; 

     RootObject ro = JsonConvert.DeserializeObject<RootObject>(j); 

     Console.WriteLine(ro.message.body); 
    } 

} 

결과 :

Hi test,

testing it, lorem ipsum lorem ipsumlorem ipsumlorem ipsumlorem ipsum.

Signature

인가 exaple JSON 문제 JSON?

+0

즉, 문제를 재현 할 수 없습니까? –

+0

@PanagiotisKanavos 예,이 문자열은 문제없이 deserialize해야합니다. – BWA

+0

대부분의 경우 OP는 실제 문자에 대한 이스케이프 된 개행 문자를 혼동하여 거기에 없었던 문자를 대체하려고 시도했습니다. –

1

ASP.NET에서이 기능을 사용하고 있습니다.

두 번 실제로 실제로 직렬화하기 때문일 가능성이 큽니다. 제 경우에는 Json.NET의 serialize 메서드를 호출하고 있었고 그 결과 문자열이 웹 API 컨트롤러에서 반환되었고 그 자체가 JSON 문자열 (ASP.NET 웹 API는 내부적으로 Json.NET을 사용함)을 serialize하고 JSON을 JSON으로 직렬화했습니다. \r\n이 모든 곳에 나타납니다.

+0

아니요. 단 한번만 일련 화되었으므로 100 % 확실하지 않습니다. – Nelex