Как сохранить значения возврата каретки / перевода строки (\ r \ n) в тексте значения JSON? - PullRequest
1 голос
/ 22 декабря 2011

Я новичок в JSON, и мне был назначен проект, в котором мне нужно использовать его из стороннего веб-сервиса. Я решил использовать Json.NET, потому что он выглядит довольно полным и, кажется, просто разбирается во многих вещах.

Есть много текста, и у меня проблемы с поддержанием пар возврата каретки / перевода строки.

Я могу продублировать проблему с помощью этого теста:

public class MyClass
{
    public string value { get; set; }
}

[Test]
public void HandleNewLines2()
{
    var value = "ALERT \r\n\r\n\r\n.  5010";
    var json = @"{""value"": """ + value + @"""}";
    MyClass myClass = JsonConvert.DeserializeObject<MyClass>(json);
    Assert.IsNotNull(myClass);
    Assert.AreEqual(value, myClass.value);
}

Не получается с этим:

HandleNewLines2 : Failed  Expected string length 19 but was 16. Strings differ at index 7.
  Expected: "ALERT \r\n\r\n\r\n.  5010"
  But was:  "ALERT \r\r\r.  5010"
  --------------------^

Перевод строки (\n) удаляется в методе JsonTextReader::MoveNext следующим образом:

    case CarriageReturnValue:
      if (_reader.Peek() == LineFeedValue)
        _reader.Read();

      _currentLineNumber++;
      _currentLinePosition = 0;
      break;

Есть ли способ сохранить пары возврата каретки / перевода строки в значении?

...