Вам вряд ли удастся выполнить это с помощью JavaScriptSerializer.
Попробуйте JSON.Net .
С незначительными изменениями из примера JSON.Net
using System;
using Newtonsoft.Json;
namespace JsonPrettyPrint
{
internal class Program
{
private static void Main(string[] args)
{
Product product = new Product
{
Name = "Apple",
Expiry = new DateTime(2008, 12, 28),
Price = 3.99M,
Sizes = new[] { "Small", "Medium", "Large" }
};
string json = JsonConvert.SerializeObject(product, Formatting.Indented);
Console.WriteLine(json);
Product deserializedProduct = JsonConvert.DeserializeObject(json);
}
}
internal class Product
{
public String[] Sizes { get; set; }
public decimal Price { get; set; }
public DateTime Expiry { get; set; }
public string Name { get; set; }
}
}
Результаты
{
"Sizes": [
"Small",
"Medium",
"Large"
],
"Price": 3.99,
"Expiry": "\/Date(1230447600000-0700)\/",
"Name": "Apple"
}
Документация: Сериализация объекта
Оператор запятой оценивает оба своих операнда (слева направо) и возвращает значение второго операнда.
blockquote>Источник: https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Comma_Operator
Например, выражение
1,2,3,4,5
имеет значение5
. Очевидно, что оператор запятой полезен только для операций с побочными эффектами.
Добавление / изменение свойств объекта и его возврат в одну строку - это возможный случай использования:
console.log(
((x) => (o = {biggerCond: r => r >= x},
o.r5 = Array.from(window.crypto.getRandomValues(new Uint16Array(5))),
o.isAnyBigger = o.r5.some(o.biggerCond),
o.bigger = o.isAnyBigger ? o.r5.filter(o.biggerCond) : [x], o )
)(5e4)
);
// Example
// {
// bigger: [58414, 56500, 63397],
// isAnyBigger: true,
// isBiggerCond: r => r >= x,
// r5: [58414, 12015, 56500, 63397, 43861]
// }
Вышеуказанное анонимная функция возвращает объект со случайными значениями, превышающими входное значение, или, если их нет, с самим входным значением в массиве, содержащимся в свойстве bigger
.
Это все еще синтаксический сахар (например, функции стрелок ), но это сокращает количество строк ... Интересно, обнаруживают ли некоторые JS-министры и автоматически корректируют код аналогичным образом. Запустите его в консоли:
((x)=>(o={biggerCond:r=>r>=x},o.r5=Array.from(window.crypto.getRandomValues(new Uint16Array(5))),o.isAnyBigger=o.r5.some(o.biggerCond),o.bigger=o.isAnyBigger?o.r5.filter(o.biggerCond):[x],o))(5e4)
Еще несколько предупреждений:
alert((0, 9));
alert((9, 0));
alert(("foo", "bar"));
Кроме того, посмотрите, что Firebug console , если вы хотите попробовать это в интерактивном режиме.
last
.
– xgqfrms
15 June 2017 в 16:30
Посмотрите здесь - запятая обозначает несколько выражений / операторов. Например, в вашем коде вы можете использовать такую строку:
var a=0, b=0, c=0;
Это объявило бы все три переменные без записи:
var a=0;
var b=0;
var c=0;
Надеюсь, что это поможет.
var
объявления не используют запятую operator i>, хотя это запятая ) и (2) вы не можете разделять записи с помощью операторов запятой; допускаются только выражения.
– Qantas 94 Heavy
26 April 2014 в 10:49
Оператор запятой оценивает оба своих операнда (слева направо) и возвращает значение операндаsecond
. del> blockquote>https://stackoverflow.com/a/3561056/5934465
Это должно быть так!
Оператор запятой оценивает каждый из своих операндов (слева направо) и возвращает значение операнда
blockquote>last
.
a,b,c,d
- ((((a),b),c),d)
– Lightness Races in Orbit
21 March 2018 в 13:16
for
. – Cyoce 24 March 2017 в 08:33continue
точек без дублирования, но тогда вы не должны иметь несколькоcontinue
точек. – Lightness Races in Orbit 21 March 2018 в 13:15