То, что вы хотите использовать, часто называют «продуктом точка-точка», т. е. найти вектор, перпендикулярный одному из векторов, а затем найти точечный продукт с другим вектором.
if(a.x*b.y - a.y*b.x < 0)
angle = -angle;
Вы также можете сделать это:
angle = atan2( a.x*b.y - a.y*b.x, a.x*b.x + a.y*b.y );
В идеале, найдите библиотеку JSON на вашем языке , в которую вы можете передать некоторую соответствующую структуру данных, и позвольте ему позаботиться о том, как избежать вещей . Это сделает вас более здравомыслящим. Если по какой-либо причине у вас нет библиотеки на вашем языке, вы не хотите ее использовать (я бы не предлагал этого¹) или вы пишете библиотеку JSON, читайте дальше.
Избегайте этого в соответствии с RFC. JSON довольно либерален: единственные символы, которые вы должны экранировать, - это \
, "
и управляющие коды (все, что меньше U + 0020).
Это структура экранирования специфична для JSON. Вам понадобится специальная функция JSON. Все экранирования можно записать как \ uXXXX
, где XXXX
- это единица кода UTF-16¹ для этого Существует несколько сокращений, например \\
, которые также работают.(И они приводят к меньшему размеру и более четкому результату.)
Для получения полной информации см. RFC .
¹Экранирование JSON построено на JS, поэтому используется \ uXXXX
, где XXXX
- это кодовая единица UTF-16. Для кодовых точек за пределами BMP это означает кодирование суррогатных пар, что может стать немного сложным. (Или вы можете просто вывести символ напрямую, поскольку JSON закодирован для текста Unicode и позволяет использовать эти конкретные символы.)
Не уверен, что вы подразумеваете под "созданием json вручную", но вы можете использовать что-то вроде gson (http://code.google.com/p/google-gson/), и это преобразует ваш HashMap, Array, String и т.д. в JSON-значение. Я рекомендую использовать для этого фреймворк.