/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.noggit; /** * @author yonik * @version $Id$ */ public class JSONUtil { public static final char[] TRUE_CHARS = new char[] {'t','r','u','e'}; public static final char[] FALSE_CHARS = new char[] {'f','a','l','s','e'}; public static final char[] NULL_CHARS = new char[] {'n','u','l','l'}; public static final char[] HEX_CHARS = new char[] {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; public static final char VALUE_SEPARATOR = ','; public static final char NAME_SEPARATOR = ':'; public static final char OBJECT_START = '{'; public static final char OBJECT_END = '}'; public static final char ARRAY_START = '['; public static final char ARRAY_END = ']'; public static String toJSON(Object o) { CharArr out = new CharArr(); new TextSerializer().serialize(new JSONWriter(out), o); return out.toString(); } public static void writeNumber(long number, CharArr out) { out.write(Long.toString(number)); } public static void writeNumber(double number, CharArr out) { out.write(Double.toString(number)); } public static void writeString(CharArr val, CharArr out) { writeString(val.getArray(), val.getStart(), val.getEnd(), out); } public static void writeString(char[] val, int start, int end, CharArr out) { out.write('"'); writeStringPart(val,start,end,out); out.write('"'); } public static void writeString(CharSequence val, int start, int end, CharArr out) { out.write('"'); writeStringPart(val,start,end,out); out.write('"'); } public static void writeStringPart(char[] val, int start, int end, CharArr out) { for (int i=start; i>>12]); out.write(HEX_CHARS[(ch>>>8)&0xf]); out.write(HEX_CHARS[(ch>>>4)&0xf]); out.write(HEX_CHARS[ch&0xf]); } public static void writeNull(CharArr out) { out.write(NULL_CHARS); } public static void writeBoolean(boolean val, CharArr out) { out.write(val ? TRUE_CHARS : FALSE_CHARS); } }