Существует ли созданный способом в.Net AJAX для ручной сериализации объекта к строке JSON?

matches() вернет true только в том случае, если полная строка соответствует. find() попытается найти следующее вхождение в подстроке, которое соответствует регулярному выражению. Обратите внимание на акцент на «следующий». Это означает, что результат вызова find() несколько раз может быть не таким. Кроме того, с помощью find() вы можете вызвать start(), чтобы вернуть позицию, подстроенную подстрокой.

final Matcher subMatcher = Pattern.compile("\\d+").matcher("skrf35kesruytfkwu4ty7sdfs");
System.out.println("Found: " + subMatcher.matches());
System.out.println("Found: " + subMatcher.find() + " - position " + subMatcher.start());
System.out.println("Found: " + subMatcher.find() + " - position " + subMatcher.start());
System.out.println("Found: " + subMatcher.find() + " - position " + subMatcher.start());
System.out.println("Found: " + subMatcher.find());
System.out.println("Found: " + subMatcher.find());
System.out.println("Matched: " + subMatcher.matches());

System.out.println("-----------");
final Matcher fullMatcher = Pattern.compile("^\\w+$").matcher("skrf35kesruytfkwu4ty7sdfs");
System.out.println("Found: " + fullMatcher.find() + " - position " + fullMatcher.start());
System.out.println("Found: " + fullMatcher.find());
System.out.println("Found: " + fullMatcher.find());
System.out.println("Matched: " + fullMatcher.matches());
System.out.println("Matched: " + fullMatcher.matches());
System.out.println("Matched: " + fullMatcher.matches());
System.out.println("Matched: " + fullMatcher.matches());

Будет выводиться:

Found: false
Found: true - position 4
Found: true - position 17
Found: true - position 20
Found: false
Found: false
Matched: false
-----------
Found: true - position 0
Found: false
Found: false
Matched: true
Matched: true
Matched: true
Matched: true

Итак, будьте осторожны при многократном вызове find(), если объект Matcher не был сброшен, даже когда регулярное выражение окружено с ^ и $, чтобы соответствовать полной строке.

10
задан travis 29 August 2008 в 19:49
поделиться

6 ответов

Это должно добиться цели

Dim jsonSerialiser As New System.Web.Script.Serialization.JavaScriptSerializer
Dim jsonString as String = jsonSerialiser.Serialize(yourObject)
10
ответ дан 3 December 2019 в 16:12
поделиться

Я думаю, что Вы ищете, этот класс:

System.ServiceModel.Web.DataContractJsonSerializer

Вот пример от Rick Strahl: DataContractJsonSerializer в.NET 3.5

6
ответ дан 3 December 2019 в 16:12
поделиться

Так как класс JavaScriptSerializer технически удерживается от использования, я полагаю, что DataContractJsonSerializer является предпочтительным способом пойти, если Вы используете 3.0 +.

4
ответ дан 3 December 2019 в 16:12
поделиться

Ну, я в настоящее время использую следующие дополнительные методы, чтобы сериализировать и десериализовать объекты:

using System.Web.Script.Serialization;

public static string ToJSON(this object objectToSerialize)
{
  JavaScriptSerializer jss = new JavaScriptSerializer();
  return jss.Serialize(objectToSerialize);
}

/// <typeparam name="T">The type we are deserializing the JSON to.</typeparam>
public static T FromJSON<T>(this string json)
{
  JavaScriptSerializer jss = new JavaScriptSerializer();
  return jss.Deserialize<T>(json);
}

Я использую это вполне немного - быть предупрежденным, эта реализация немного наивна (т.е. существуют некоторые потенциальные проблемы с нею, в зависимости от того, что Вы сериализируете и как Вы используете ее на клиенте, особенно с DateTimes).

3
ответ дан 3 December 2019 в 16:12
поделиться

В Системе. Сеть. Блок расширений, версия 3.5.0.0, существует класс JavaScriptSerializer, который должен обработать то, что Вы хотите.

2
ответ дан 3 December 2019 в 16:12
поделиться

Попробовать

System.Web.Script.Serialization.JavaScriptSerializer

или Выезд, JSON.org там является целым списком библиотек, записанных, чтобы сделать точно, что Вы хотите.

1
ответ дан 3 December 2019 в 16:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: