package com.fasterxml.jackson.core.json;
import java.io.*;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.core.io.SerializedString;
public class TestGeneratorWithSerializedString
extends com.fasterxml.jackson.test.BaseTest
{
final static String NAME_WITH_QUOTES = "\"name\"";
final static String NAME_WITH_LATIN1 = "P\u00f6ll\u00f6";
private final SerializedString quotedName = new SerializedString(NAME_WITH_QUOTES);
private final SerializedString latin1Name = new SerializedString(NAME_WITH_LATIN1);
public void testSimple() throws Exception
{
JsonFactory jf = new JsonFactory();
// First using char-backed generator
StringWriter sw = new StringWriter();
JsonGenerator jgen = jf.createGenerator(sw);
_writeSimple(jgen);
jgen.close();
String json = sw.toString();
_verifySimple(jf.createParser(json));
// then using UTF-8
ByteArrayOutputStream out = new ByteArrayOutputStream();
jgen = jf.createGenerator(out, JsonEncoding.UTF8);
_writeSimple(jgen);
jgen.close();
byte[] jsonB = out.toByteArray();
_verifySimple(jf.createParser(jsonB));
}
/*
/**********************************************************
/* Helper methods
/**********************************************************
*/
private void _writeSimple(JsonGenerator jgen) throws Exception
{
// Let's just write array of 2 objects
jgen.writeStartArray();
jgen.writeStartObject();
jgen.writeFieldName(quotedName);
jgen.writeString("a");
jgen.writeFieldName(latin1Name);
jgen.writeString("b");
jgen.writeEndObject();
jgen.writeStartObject();
jgen.writeFieldName(latin1Name);
jgen.writeString("c");
jgen.writeFieldName(quotedName);
jgen.writeString("d");
jgen.writeEndObject();
jgen.writeEndArray();
}
private void _verifySimple(JsonParser jp) throws Exception
{
assertToken(JsonToken.START_ARRAY, jp.nextToken());
assertToken(JsonToken.START_OBJECT, jp.nextToken());
assertToken(JsonToken.FIELD_NAME, jp.nextToken());
assertEquals(NAME_WITH_QUOTES, jp.getText());
assertToken(JsonToken.VALUE_STRING, jp.nextToken());
assertEquals("a", jp.getText());
assertToken(JsonToken.FIELD_NAME, jp.nextToken());
assertEquals(NAME_WITH_LATIN1, jp.getText());
assertToken(JsonToken.VALUE_STRING, jp.nextToken());
assertEquals("b", jp.getText());
assertToken(JsonToken.END_OBJECT, jp.nextToken());
assertToken(JsonToken.START_OBJECT, jp.nextToken());
assertToken(JsonToken.FIELD_NAME, jp.nextToken());
assertEquals(NAME_WITH_LATIN1, jp.getText());
assertToken(JsonToken.VALUE_STRING, jp.nextToken());
assertEquals("c", jp.getText());
assertToken(JsonToken.FIELD_NAME, jp.nextToken());
assertEquals(NAME_WITH_QUOTES, jp.getText());
assertToken(JsonToken.VALUE_STRING, jp.nextToken());
assertEquals("d", jp.getText());
assertToken(JsonToken.END_OBJECT, jp.nextToken());
assertToken(JsonToken.END_ARRAY, jp.nextToken());
assertNull(jp.nextToken());
}
}