<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JsonSerializerBuilder (Apache Juneau 8.1.4)</title>
<link rel="stylesheet" type="text/css" href="../../../../javadoc.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="JsonSerializerBuilder (Apache Juneau 8.1.4)";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":42,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":42,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/juneau/json/JsonSerializer.ReadableSafe.html" title="class in org.apache.juneau.json"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/juneau/json/JsonSerializerSession.html" title="class in org.apache.juneau.json"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/juneau/json/JsonSerializerBuilder.html" target="_top">Frames</a></li>
<li><a href="JsonSerializerBuilder.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.juneau.json</div>
<h2 title="Class JsonSerializerBuilder" class="title">Class JsonSerializerBuilder</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../org/apache/juneau/ContextBuilder.html" title="class in org.apache.juneau">org.apache.juneau.ContextBuilder</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../org/apache/juneau/BeanContextBuilder.html" title="class in org.apache.juneau">org.apache.juneau.BeanContextBuilder</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../org/apache/juneau/BeanTraverseBuilder.html" title="class in org.apache.juneau">org.apache.juneau.BeanTraverseBuilder</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html" title="class in org.apache.juneau.serializer">org.apache.juneau.serializer.SerializerBuilder</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">org.apache.juneau.serializer.WriterSerializerBuilder</a></li>
<li>
<ul class="inheritance">
<li>org.apache.juneau.json.JsonSerializerBuilder</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../org/apache/juneau/json/JsonSchemaSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSchemaSerializerBuilder</a>, <a href="../../../../org/apache/juneau/json/SimpleJsonSerializerBuilder.html" title="class in org.apache.juneau.json">SimpleJsonSerializerBuilder</a></dd>
</dl>
<hr>
<br>
<pre>public class <a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.32">JsonSerializerBuilder</a>
extends <a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></pre>
<div class="block">Builder class for building instances of JSON serializers.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#JsonSerializerBuilder--">JsonSerializerBuilder</a></span>()</code>
<div class="block">Constructor, default settings.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#JsonSerializerBuilder-org.apache.juneau.PropertyStore-">JsonSerializerBuilder</a></span>(<a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau">PropertyStore</a>&nbsp;ps)</code>
<div class="block">Constructor.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#add-java.util.Map-">add</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;properties)</code>
<div class="block">Adds multiple free-form configuration properties on this object without first clearing out any previous values.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#addBeanTypes--">addBeanTypes</a></span>()</code>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Add <js>"_type"</js> properties when needed.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#addRootType--">addRootType</a></span>()</code>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Add type attribute to root nodes.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#addTo-java.lang.String-java.lang.Object-">addTo</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</code>
<div class="block">Adds a free-form value to a SET property.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#annotations-java.lang.annotation.Annotation...-">annotations</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>...&nbsp;values)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Dynamically applied POJO annotations.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#appendTo-java.lang.String-java.lang.Object-">appendTo</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</code>
<div class="block">Adds a free-form value to the end of a LIST property.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#apply-org.apache.juneau.PropertyStore-">apply</a></span>(<a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau">PropertyStore</a>&nbsp;copyFrom)</code>
<div class="block">Copies the settings from the specified property store into this builder.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#applyAnnotations-org.apache.juneau.reflect.AnnotationList-org.apache.juneau.svl.VarResolverSession-">applyAnnotations</a></span>(<a href="../../../../org/apache/juneau/reflect/AnnotationList.html" title="class in org.apache.juneau.reflect">AnnotationList</a>&nbsp;al,
                <a href="../../../../org/apache/juneau/svl/VarResolverSession.html" title="class in org.apache.juneau.svl">VarResolverSession</a>&nbsp;r)</code>
<div class="block">Applies a set of annotations to this property store.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#applyAnnotations-java.lang.Class...-">applyAnnotations</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;fromClasses)</code>
<div class="block">Applies any of the various <ja>@XConfig</ja> annotations on the specified class to this context.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#applyAnnotations-java.lang.reflect.Method...-">applyAnnotations</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true" title="class or interface in java.lang.reflect">Method</a>...&nbsp;fromMethods)</code>
<div class="block">Applies any of the various <ja>@XConfig</ja> annotations on the specified method to this context.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#beanClassVisibility-org.apache.juneau.Visibility-">beanClassVisibility</a></span>(<a href="../../../../org/apache/juneau/Visibility.html" title="enum in org.apache.juneau">Visibility</a>&nbsp;value)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Minimum bean class visibility.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#beanConstructorVisibility-org.apache.juneau.Visibility-">beanConstructorVisibility</a></span>(<a href="../../../../org/apache/juneau/Visibility.html" title="enum in org.apache.juneau">Visibility</a>&nbsp;value)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Minimum bean constructor visibility.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#beanFieldVisibility-org.apache.juneau.Visibility-">beanFieldVisibility</a></span>(<a href="../../../../org/apache/juneau/Visibility.html" title="enum in org.apache.juneau">Visibility</a>&nbsp;value)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Minimum bean field visibility.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#beanInterceptor-java.lang.Class-java.lang.Class-">beanInterceptor</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;on,
               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/transform/BeanInterceptor.html" title="class in org.apache.juneau.transform">BeanInterceptor</a>&lt;?&gt;&gt;&nbsp;value)</code>
<div class="block">Bean interceptor.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#beanMapPutReturnsOldValue--">beanMapPutReturnsOldValue</a></span>()</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  BeanMap.put() returns old property value.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#beanMethodVisibility-org.apache.juneau.Visibility-">beanMethodVisibility</a></span>(<a href="../../../../org/apache/juneau/Visibility.html" title="enum in org.apache.juneau">Visibility</a>&nbsp;value)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Minimum bean method visibility.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#beansDontRequireSomeProperties--">beansDontRequireSomeProperties</a></span>()</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Beans require at least one property.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#beansRequireDefaultConstructor--">beansRequireDefaultConstructor</a></span>()</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Beans require no-arg constructors.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#beansRequireSerializable--">beansRequireSerializable</a></span>()</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Beans require Serializable interface.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#beansRequireSettersForGetters--">beansRequireSettersForGetters</a></span>()</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Beans require setters for getters.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#bpi-java.lang.Class-java.lang.String-">bpi</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;beanClass,
   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;properties)</code>
<div class="block">Bean property includes.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#bpi-java.util.Map-">bpi</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;values)</code>
<div class="block">Bean property includes.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#bpi-java.lang.String-java.lang.String-">bpi</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;beanClassName,
   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;properties)</code>
<div class="block">Bean property includes.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#bpro-java.lang.Class-java.lang.String-">bpro</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;beanClass,
    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;properties)</code>
<div class="block">Read-only bean properties.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#bpro-java.util.Map-">bpro</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;values)</code>
<div class="block">Read-only bean properties.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#bpro-java.lang.String-java.lang.String-">bpro</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;beanClassName,
    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;properties)</code>
<div class="block">Read-only bean properties.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#bpwo-java.lang.Class-java.lang.String-">bpwo</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;beanClass,
    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;properties)</code>
<div class="block">Write-only bean properties.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#bpwo-java.util.Map-">bpwo</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;values)</code>
<div class="block">Write-only bean properties.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#bpwo-java.lang.String-java.lang.String-">bpwo</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;beanClassName,
    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;properties)</code>
<div class="block">Write-only bean properties.</div>
</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#bpx-java.lang.Class-java.lang.String-">bpx</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;beanClass,
   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;properties)</code>
<div class="block">Bean property excludes.</div>
</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#bpx-java.util.Map-">bpx</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;values)</code>
<div class="block">Bean property excludes.</div>
</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#bpx-java.lang.String-java.lang.String-">bpx</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;beanClassName,
   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;properties)</code>
<div class="block">Bean property excludes.</div>
</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializer.html" title="class in org.apache.juneau.json">JsonSerializer</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#build--">build</a></span>()</code>
<div class="block">Build the object.</div>
</td>
</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#debug--">debug</a></span>()</code>
<div class="block"><i><l>Context</l> configuration property:&emsp;</i>  Debug mode.</div>
</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#detectRecursions--">detectRecursions</a></span>()</code>
<div class="block"><i><l>BeanTraverse</l> configuration property:&emsp;</i>  Automatically detect POJO recursions.</div>
</td>
</tr>
<tr id="i35" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#dictionary-java.lang.Object...-">dictionary</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Bean dictionary.</div>
</td>
</tr>
<tr id="i36" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#dictionaryOn-java.lang.Class-java.lang.Class...-">dictionaryOn</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;on,
            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Bean dictionary.</div>
</td>
</tr>
<tr id="i37" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#dontIgnorePropertiesWithoutSetters--">dontIgnorePropertiesWithoutSetters</a></span>()</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Ignore properties without setters.</div>
</td>
</tr>
<tr id="i38" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#dontIgnoreTransientFields--">dontIgnoreTransientFields</a></span>()</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Ignore transient fields.</div>
</td>
</tr>
<tr id="i39" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#dontIgnoreUnknownNullBeanProperties--">dontIgnoreUnknownNullBeanProperties</a></span>()</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Ignore unknown properties with null values.</div>
</td>
</tr>
<tr id="i40" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#dontUseInterfaceProxies--">dontUseInterfaceProxies</a></span>()</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Use interface proxies.</div>
</td>
</tr>
<tr id="i41" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#escapeSolidus--">escapeSolidus</a></span>()</code>
<div class="block"><i><l>JsonSerializer</l> configuration property:&emsp;</i>  Prefix solidus <js>'/'</js> characters with escapes.</div>
</td>
</tr>
<tr id="i42" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#escapeSolidus-boolean-">escapeSolidus</a></span>(boolean&nbsp;value)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
</td>
</tr>
<tr id="i43" class="rowColor">
<td class="colFirst"><code>&lt;T&gt;&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#example-java.lang.Class-T-">example</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;pojoClass,
       T&nbsp;o)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  POJO example.</div>
</td>
</tr>
<tr id="i44" class="altColor">
<td class="colFirst"><code>&lt;T&gt;&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#exampleJson-java.lang.Class-java.lang.String-">exampleJson</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;pojoClass,
           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;json)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  POJO example.</div>
</td>
</tr>
<tr id="i45" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#fileCharset-java.nio.charset.Charset-">fileCharset</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html?is-external=true" title="class or interface in java.nio.charset">Charset</a>&nbsp;value)</code>
<div class="block"><i><l>WriterSerializer</l> configuration property:&emsp;</i> File charset.</div>
</td>
</tr>
<tr id="i46" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#fluentSetters--">fluentSetters</a></span>()</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Find fluent setters.</div>
</td>
</tr>
<tr id="i47" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#fluentSetters-java.lang.Class-">fluentSetters</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;on)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Find fluent setters.</div>
</td>
</tr>
<tr id="i48" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#ignoreInvocationExceptionsOnGetters--">ignoreInvocationExceptionsOnGetters</a></span>()</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Ignore invocation errors on getters.</div>
</td>
</tr>
<tr id="i49" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#ignoreInvocationExceptionsOnSetters--">ignoreInvocationExceptionsOnSetters</a></span>()</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Ignore invocation errors on setters.</div>
</td>
</tr>
<tr id="i50" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#ignoreRecursions--">ignoreRecursions</a></span>()</code>
<div class="block"><i><l>BeanTraverse</l> configuration property:&emsp;</i>  Ignore recursion errors.</div>
</td>
</tr>
<tr id="i51" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#ignoreUnknownBeanProperties--">ignoreUnknownBeanProperties</a></span>()</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Ignore unknown properties.</div>
</td>
</tr>
<tr id="i52" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#implClass-java.lang.Class-java.lang.Class-">implClass</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;interfaceClass,
         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;implClass)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Implementation classes.</div>
</td>
</tr>
<tr id="i53" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#implClasses-java.util.Map-">implClasses</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&gt;&nbsp;values)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Implementation classes.</div>
</td>
</tr>
<tr id="i54" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#initialDepth-int-">initialDepth</a></span>(int&nbsp;value)</code>
<div class="block"><i><l>BeanTraverse</l> configuration property:&emsp;</i>  Initial depth.</div>
</td>
</tr>
<tr id="i55" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#interfaceClass-java.lang.Class-java.lang.Class-">interfaceClass</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;on,
              <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;value)</code>
<div class="block">Identifies a class to be used as the interface class for the specified class and all subclasses.</div>
</td>
</tr>
<tr id="i56" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#interfaces-java.lang.Class...-">interfaces</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;value)</code>
<div class="block">Identifies a set of interfaces.</div>
</td>
</tr>
<tr id="i57" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#keepNullProperties--">keepNullProperties</a></span>()</code>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Don't trim null bean property values.</div>
</td>
</tr>
<tr id="i58" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#listener-java.lang.Class-">listener</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/serializer/SerializerListener.html" title="class in org.apache.juneau.serializer">SerializerListener</a>&gt;&nbsp;value)</code>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Serializer listener.</div>
</td>
</tr>
<tr id="i59" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#locale-java.util.Locale-">locale</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a>&nbsp;value)</code>
<div class="block"><i><l>Context</l> configuration property:&emsp;</i>  Locale.</div>
</td>
</tr>
<tr id="i60" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#maxDepth-int-">maxDepth</a></span>(int&nbsp;value)</code>
<div class="block"><i><l>BeanTraverse</l> configuration property:&emsp;</i>  Max traversal depth.</div>
</td>
</tr>
<tr id="i61" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#maxIndent-int-">maxIndent</a></span>(int&nbsp;value)</code>
<div class="block"><i><l>WriterSerializer</l> configuration property:&emsp;</i>  Maximum indentation.</div>
</td>
</tr>
<tr id="i62" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#mediaType-org.apache.juneau.http.MediaType-">mediaType</a></span>(<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>&nbsp;value)</code>
<div class="block"><i><l>Context</l> configuration property:&emsp;</i>  Media type.</div>
</td>
</tr>
<tr id="i63" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#notBeanClasses-java.lang.Object...-">notBeanClasses</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Bean class exclusions.</div>
</td>
</tr>
<tr id="i64" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#notBeanPackages-java.lang.Object...-">notBeanPackages</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Bean package exclusions.</div>
</td>
</tr>
<tr id="i65" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#prependTo-java.lang.String-java.lang.Object-">prependTo</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</code>
<div class="block">Adds a free-form value to the beginning of a LIST property.</div>
</td>
</tr>
<tr id="i66" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#propertyNamer-java.lang.Class-java.lang.Class-">propertyNamer</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;on,
             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/PropertyNamer.html" title="interface in org.apache.juneau">PropertyNamer</a>&gt;&nbsp;value)</code>
<div class="block">Bean property namer</div>
</td>
</tr>
<tr id="i67" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#propertyNamer-java.lang.Class-">propertyNamer</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/PropertyNamer.html" title="interface in org.apache.juneau">PropertyNamer</a>&gt;&nbsp;value)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Bean property namer</div>
</td>
</tr>
<tr id="i68" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#putAllTo-java.lang.String-java.lang.Object-">putAllTo</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</code>
<div class="block">Adds or overwrites multiple free-form entries in a MAP property.</div>
</td>
</tr>
<tr id="i69" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#putTo-java.lang.String-java.lang.String-java.lang.Object-">putTo</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</code>
<div class="block">Adds or overwrites a free-form entry in a MAP property.</div>
</td>
</tr>
<tr id="i70" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#quoteChar-char-">quoteChar</a></span>(char&nbsp;value)</code>
<div class="block"><i><l>WriterSerializer</l> configuration property:&emsp;</i>  Quote character.</div>
</td>
</tr>
<tr id="i71" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#removeFrom-java.lang.String-java.lang.Object-">removeFrom</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</code>
<div class="block">Removes a free-form value from a SET, LIST, or MAP property.</div>
</td>
</tr>
<tr id="i72" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#set-java.util.Map-">set</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;properties)</code>
<div class="block">Sets multiple free-form configuration properties on this object replacing all previous values.</div>
</td>
</tr>
<tr id="i73" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#set-java.lang.String-java.lang.Object-">set</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</code>
<div class="block">Sets a free-form configuration property on this object.</div>
</td>
</tr>
<tr id="i74" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#simple--">simple</a></span>()</code>
<div class="block"><i><l>JsonSerializer</l> configuration property:&emsp;</i>  Simple JSON mode.</div>
</td>
</tr>
<tr id="i75" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#simple-boolean-">simple</a></span>(boolean&nbsp;value)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
</td>
</tr>
<tr id="i76" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#sortCollections--">sortCollections</a></span>()</code>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Sort arrays and collections alphabetically.</div>
</td>
</tr>
<tr id="i77" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#sortMaps--">sortMaps</a></span>()</code>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Sort maps alphabetically.</div>
</td>
</tr>
<tr id="i78" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#sortProperties--">sortProperties</a></span>()</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Sort bean properties.</div>
</td>
</tr>
<tr id="i79" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#sortProperties-java.lang.Class...-">sortProperties</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;on)</code>
<div class="block">Sort bean properties.</div>
</td>
</tr>
<tr id="i80" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#sq--">sq</a></span>()</code>
<div class="block"><i><l>WriterSerializer</l> configuration property:&emsp;</i>  Quote character.</div>
</td>
</tr>
<tr id="i81" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#ssq--">ssq</a></span>()</code>
<div class="block"><i><l>JsonSerializer</l> configuration property:&emsp;</i>  Simple JSON mode and single quote.</div>
</td>
</tr>
<tr id="i82" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#stopClass-java.lang.Class-java.lang.Class-">stopClass</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;on,
         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;value)</code>
<div class="block">Identifies a stop class for the annotated class.</div>
</td>
</tr>
<tr id="i83" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#streamCharset-java.nio.charset.Charset-">streamCharset</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html?is-external=true" title="class or interface in java.nio.charset">Charset</a>&nbsp;value)</code>
<div class="block"><i><l>WriterSerializer</l> configuration property:&emsp;</i> Output stream charset.</div>
</td>
</tr>
<tr id="i84" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#swaps-java.lang.Object...-">swaps</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Java object swaps.</div>
</td>
</tr>
<tr id="i85" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#timeZone-java.util.TimeZone-">timeZone</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/TimeZone.html?is-external=true" title="class or interface in java.util">TimeZone</a>&nbsp;value)</code>
<div class="block"><i><l>Context</l> configuration property:&emsp;</i>  TimeZone.</div>
</td>
</tr>
<tr id="i86" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#trimEmptyCollections--">trimEmptyCollections</a></span>()</code>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Trim empty lists and arrays.</div>
</td>
</tr>
<tr id="i87" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#trimEmptyMaps--">trimEmptyMaps</a></span>()</code>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Trim empty maps.</div>
</td>
</tr>
<tr id="i88" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#trimStrings--">trimStrings</a></span>()</code>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Trim strings.</div>
</td>
</tr>
<tr id="i89" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#typeName-java.lang.Class-java.lang.String-">typeName</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;on,
        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</code>
<div class="block">An identifying name for this class.</div>
</td>
</tr>
<tr id="i90" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#typePropertyName-java.lang.Class-java.lang.String-">typePropertyName</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;on,
                <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Bean type property name.</div>
</td>
</tr>
<tr id="i91" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#typePropertyName-java.lang.String-">typePropertyName</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Bean type property name.</div>
</td>
</tr>
<tr id="i92" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#uriContext-org.apache.juneau.UriContext-">uriContext</a></span>(<a href="../../../../org/apache/juneau/UriContext.html" title="class in org.apache.juneau">UriContext</a>&nbsp;value)</code>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  URI context bean.</div>
</td>
</tr>
<tr id="i93" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#uriRelativity-org.apache.juneau.UriRelativity-">uriRelativity</a></span>(<a href="../../../../org/apache/juneau/UriRelativity.html" title="enum in org.apache.juneau">UriRelativity</a>&nbsp;value)</code>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  URI relativity.</div>
</td>
</tr>
<tr id="i94" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#uriResolution-org.apache.juneau.UriResolution-">uriResolution</a></span>(<a href="../../../../org/apache/juneau/UriResolution.html" title="enum in org.apache.juneau">UriResolution</a>&nbsp;value)</code>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  URI resolution.</div>
</td>
</tr>
<tr id="i95" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#useEnumNames--">useEnumNames</a></span>()</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Use enum names.</div>
</td>
</tr>
<tr id="i96" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#useJavaBeanIntrospector--">useJavaBeanIntrospector</a></span>()</code>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Use Java Introspector.</div>
</td>
</tr>
<tr id="i97" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#useWhitespace--">useWhitespace</a></span>()</code>
<div class="block"><i><l>WriterSerializer</l> configuration property:&emsp;</i>  Use whitespace.</div>
</td>
</tr>
<tr id="i98" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#ws--">ws</a></span>()</code>
<div class="block"><i><l>WriterSerializer</l> configuration property:&emsp;</i>  Use whitespace.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.serializer.WriterSerializerBuilder">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.juneau.serializer.<a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></h3>
<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#useWhitespace-boolean-">useWhitespace</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.serializer.SerializerBuilder">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.juneau.serializer.<a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html" title="class in org.apache.juneau.serializer">SerializerBuilder</a></h3>
<code><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#addBeanTypes-boolean-">addBeanTypes</a>, <a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#addRootType-boolean-">addRootType</a>, <a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#dontTrimNullProperties--">dontTrimNullProperties</a>, <a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#keepNullProperties-boolean-">keepNullProperties</a>, <a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#sortCollections-boolean-">sortCollections</a>, <a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#sortMaps-boolean-">sortMaps</a>, <a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#trimEmptyCollections-boolean-">trimEmptyCollections</a>, <a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#trimEmptyMaps-boolean-">trimEmptyMaps</a>, <a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#trimNullProperties-boolean-">trimNullProperties</a>, <a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#trimStrings-boolean-">trimStrings</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.BeanTraverseBuilder">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.juneau.<a href="../../../../org/apache/juneau/BeanTraverseBuilder.html" title="class in org.apache.juneau">BeanTraverseBuilder</a></h3>
<code><a href="../../../../org/apache/juneau/BeanTraverseBuilder.html#detectRecursions-boolean-">detectRecursions</a>, <a href="../../../../org/apache/juneau/BeanTraverseBuilder.html#ignoreRecursions-boolean-">ignoreRecursions</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.BeanContextBuilder">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.juneau.<a href="../../../../org/apache/juneau/BeanContextBuilder.html" title="class in org.apache.juneau">BeanContextBuilder</a></h3>
<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanDictionary-java.lang.Class...-">beanDictionary</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanDictionary-java.lang.Object...-">beanDictionary</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanDictionaryRemove-java.lang.Class...-">beanDictionaryRemove</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanDictionaryRemove-java.lang.Object...-">beanDictionaryRemove</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanDictionaryReplace-java.lang.Class...-">beanDictionaryReplace</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanDictionaryReplace-java.lang.Object...-">beanDictionaryReplace</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanFilters-java.lang.Object...-">beanFilters</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanFiltersRemove-java.lang.Object...-">beanFiltersRemove</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanFiltersReplace-java.lang.Object...-">beanFiltersReplace</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanMapPutReturnsOldValue-boolean-">beanMapPutReturnsOldValue</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#beansRequireDefaultConstructor-boolean-">beansRequireDefaultConstructor</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#beansRequireSerializable-boolean-">beansRequireSerializable</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#beansRequireSettersForGetters-boolean-">beansRequireSettersForGetters</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#beansRequireSomeProperties-boolean-">beansRequireSomeProperties</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#debug-boolean-">debug</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#excludeProperties-java.lang.Class-java.lang.String-">excludeProperties</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#excludeProperties-java.util.Map-">excludeProperties</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#excludeProperties-java.lang.String-java.lang.String-">excludeProperties</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#fluentSetters-boolean-">fluentSetters</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreInvocationExceptionsOnGetters-boolean-">ignoreInvocationExceptionsOnGetters</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreInvocationExceptionsOnSetters-boolean-">ignoreInvocationExceptionsOnSetters</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignorePropertiesWithoutSetters-boolean-">ignorePropertiesWithoutSetters</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreTransientFields-boolean-">ignoreTransientFields</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreUnknownBeanProperties-boolean-">ignoreUnknownBeanProperties</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreUnknownNullBeanProperties-boolean-">ignoreUnknownNullBeanProperties</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#includeProperties-java.lang.Class-java.lang.String-">includeProperties</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#includeProperties-java.util.Map-">includeProperties</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#includeProperties-java.lang.String-java.lang.String-">includeProperties</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#pojoSwaps-java.lang.Object...-">pojoSwaps</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#pojoSwapsRemove-java.lang.Object...-">pojoSwapsRemove</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#pojoSwapsReplace-java.lang.Object...-">pojoSwapsReplace</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#sortProperties-boolean-">sortProperties</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#useEnumNames-boolean-">useEnumNames</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#useInterfaceProxies-boolean-">useInterfaceProxies</a>, <a href="../../../../org/apache/juneau/BeanContextBuilder.html#useJavaBeanIntrospector-boolean-">useJavaBeanIntrospector</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.ContextBuilder">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.juneau.<a href="../../../../org/apache/juneau/ContextBuilder.html" title="class in org.apache.juneau">ContextBuilder</a></h3>
<code><a href="../../../../org/apache/juneau/ContextBuilder.html#build-java.lang.Class-">build</a>, <a href="../../../../org/apache/juneau/ContextBuilder.html#getPropertyStore--">getPropertyStore</a>, <a href="../../../../org/apache/juneau/ContextBuilder.html#getPropertyStoreBuilder--">getPropertyStoreBuilder</a>, <a href="../../../../org/apache/juneau/ContextBuilder.html#peek-java.lang.Class-java.lang.String-">peek</a>, <a href="../../../../org/apache/juneau/ContextBuilder.html#peek-java.lang.String-">peek</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="JsonSerializerBuilder--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>JsonSerializerBuilder</h4>
<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.37">JsonSerializerBuilder</a>()</pre>
<div class="block">Constructor, default settings.</div>
</li>
</ul>
<a name="JsonSerializerBuilder-org.apache.juneau.PropertyStore-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>JsonSerializerBuilder</h4>
<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.46">JsonSerializerBuilder</a>(<a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau">PropertyStore</a>&nbsp;ps)</pre>
<div class="block">Constructor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>ps</code> - The initial configuration settings for this builder.</dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="build--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>build</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializer.html" title="class in org.apache.juneau.json">JsonSerializer</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.51">build</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#build--">ContextBuilder</a></code></span></div>
<div class="block">Build the object.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#build--">build</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The built object.
   <br>Subsequent calls to this method will create new instances (unless context object is cacheable).</dd>
</dl>
</li>
</ul>
<a name="escapeSolidus-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>escapeSolidus</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.69">escapeSolidus</a>(boolean&nbsp;value)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block"><i><l>JsonSerializer</l> configuration property:&emsp;</i>  Prefix solidus <js>'/'</js> characters with escapes.

 <div class='warn'>
   <b>Deprecated</b> - Use <a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#escapeSolidus--"><code>escapeSolidus()</code></a>
 </div></div>
</li>
</ul>
<a name="escapeSolidus--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>escapeSolidus</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.86">escapeSolidus</a>()</pre>
<div class="block"><i><l>JsonSerializer</l> configuration property:&emsp;</i>  Prefix solidus <js>'/'</js> characters with escapes.

 <p>
 Shortcut for calling <code>escapeSolidus(<jk>true</jk>)</code>.

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/json/JsonSerializer.html#JSON_escapeSolidus"><code>JsonSerializer.JSON_escapeSolidus</code></a>
 </ul></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="simple-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simple</h4>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.100">simple</a>(boolean&nbsp;value)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block"><i><l>JsonSerializer</l> configuration property:&emsp;</i>  Simple JSON mode.

 <div class='warn'>
   <b>Deprecated</b> - Use <a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html#simple--"><code>simple()</code></a>
 </div></div>
</li>
</ul>
<a name="simple--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simple</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.117">simple</a>()</pre>
<div class="block"><i><l>JsonSerializer</l> configuration property:&emsp;</i>  Simple JSON mode.

 <p>
 Shortcut for calling <code>simple(<jk>true</jk>)</code>.

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/json/JsonSerializer.html#JSON_simpleMode"><code>JsonSerializer.JSON_simpleMode</code></a>
 </ul></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="ssq--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ssq</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.135">ssq</a>()</pre>
<div class="block"><i><l>JsonSerializer</l> configuration property:&emsp;</i>  Simple JSON mode and single quote.

 <p>
 Shortcut for calling <c>simple().sq()</c>.

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/json/JsonSerializer.html#JSON_simpleMode"><code>JsonSerializer.JSON_simpleMode</code></a>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/WriterSerializer.html#WSERIALIZER_quoteChar"><code>WriterSerializer.WSERIALIZER_quoteChar</code></a>
 </ul></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="add-java.util.Map-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>add</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.142">add</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;properties)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#add-java.util.Map-">ContextBuilder</a></code></span></div>
<div class="block">Adds multiple free-form configuration properties on this object without first clearing out any previous values.

 <p>
 Identical in function to <a href="../../../../org/apache/juneau/ContextBuilder.html#set-java.lang.String-java.lang.Object-"><code>ContextBuilder.set(String, Object)</code></a> but allows you to specify multiple values at once.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that sorts bean properties.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .sortMaps()
      .sortProperties()
      .build();

   <jc>// Same, but use generic add() method.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .add(
         AMap.<jsm>of</jsm>(
            <jsf>BEAN_sortMaps</jsf>, <jk>true</jk>,
            <jsf>BEAN_sortProperties</jsf>, <jk>true</jk>
         )
      )
      .build();
 </p>

 <ul class='seealso'>
   <li class='jc'><a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau"><code>PropertyStore</code></a>
   <li class='jm'><a href="../../../../org/apache/juneau/ContextBuilder.html#set-java.lang.String-java.lang.Object-"><code>ContextBuilder.set(String, Object)</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#add-java.util.Map-">add</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>properties</code> - The properties to set on this class.
   <br>The keys must be strings.
   <br>The valid value types depend on the property type:
   <ul>
      <li><js>"s"</js> - Any <l>Object</l> converted to a <l>String</l> using <c>value.toString()</c>.
      <li><js>"b"</js> - Any <l>Object</l> converted to a <l>Boolean</l> using <c>Boolean.<jsm>parseBoolean</jsm>(value.toString())</c>.
      <li><js>"i"</js> - Any <l>Object</l> converted to an <l>Integer</l> using <c>Integer.<jsm>valueOf</jsm>(value.toString())</c>.
      <li><js>"c"</js> - Only <l>Class</l> objects are allowed.
      <li><js>"o"</js> - Left as-is.
      <li><js>"ss"</js>,<js>"si"</js>,<js>"sc"</js> - Any collection or array of any convertible <l>Objects</l> or a JSON Array string.
      <li><js>"ls"</js>,<js>"li"</js>,<js>"lc"</js>,<js>"lo"</js> - Any collection or array of any convertible <l>Objects</l> or a JSON Array string.
      <li><js>"sms"</js>,<js>"smi"</js>,<js>"smc"</js>,<js>"smo"</js> - Any sorted map of any convertible <l>Objects</l> or a JSON Object string.
      <li><js>"oms"</js>,<js>"omi"</js>,<js>"omc"</js>,<js>"omo"</js> - Any ordered map of any convertible <l>Objects</l> or a JSON Object string.
   </ul></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="addTo-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addTo</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.148">addTo</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#addTo-java.lang.String-java.lang.Object-">ContextBuilder</a></code></span></div>
<div class="block">Adds a free-form value to a SET property.

 <p>
 SET properties are those properties with one of the following type parts:
 <ul>
   <li><js>"ss"</js> - <c>TreeSet&lt;String&gt;</c>
   <li><js>"si"</js> - <c>TreeSet&lt;Integer&gt;</c>
   <li><js>"sc"</js> - <c>TreeSet&lt;Class&gt;</c>
 </ul>

 <p>
 For example, the <a href="../../../../org/apache/juneau/BeanContext.html#BEAN_notBeanClasses"><code>BeanContext.BEAN_notBeanClasses</code></a> property which has the value <js>"BeanContext.notBeanClasses.sc"</js>.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that forces MyNotBean classes to be converted to strings.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .notBeanClasses(MyNotBean.<jk>class</jk>)
      .build();

   <jc>// Same, but use generic addTo() method.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .addTo(<jsf>BEAN_notBeanClasses</jsf>, MyNotBean.<jk>class</jk>)
      .build();
 </p>

 <ul class='seealso'>
   <li class='jc'><a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau"><code>PropertyStore</code></a>
   <li class='jm'><a href="../../../../org/apache/juneau/ContextBuilder.html#set-java.lang.String-java.lang.Object-"><code>ContextBuilder.set(String, Object)</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#addTo-java.lang.String-java.lang.Object-">addTo</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - The property name.</dd>
<dd><code>value</code> - The new value to add to the SET property.
   <br>The valid value types depend on the property type:
   <ul>
      <li><js>"ss"</js> - Any <l>Object</l> converted to a <l>String</l> using <c>value.toString()</c>.
      <li><js>"si"</js> - Any <l>Object</l> converted to an <l>Integer</l> using <c>Integer.<jsm>valueOf</jsm>(value.toString())</c>.
      <li><js>"sc"</js> - Only <l>Class</l> objects are allowed.
   </ul></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="appendTo-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>appendTo</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.154">appendTo</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#appendTo-java.lang.String-java.lang.Object-">ContextBuilder</a></code></span></div>
<div class="block">Adds a free-form value to the end of a LIST property.

 <p>
 LIST properties are those properties with one of the following type parts:
 <ul>
   <li><js>"ls"</js> - <c>Linkedlist&lt;String&gt;</c>
   <li><js>"li"</js> - <c>Linkedlist&lt;Integer&gt;</c>
   <li><js>"lc"</js> - <c>Linkedlist&lt;Class&gt;</c>
   <li><js>"lo"</js> - <c>Linkedlist&lt;Object&gt;</c>
 </ul>

 <p>
 For example, the <a href="../../../../org/apache/juneau/BeanContext.html#BEAN_swaps"><code>BeanContext.BEAN_swaps</code></a> property which has the value <js>"BeanContext.swaps.lo"</js>.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that converts Temporal objects to Basic ISO date strings.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .swaps(TemoralCalendarSwap.BasicIsoDate.<jk>class</jk>)
      .build();

   <jc>// Same, but use generic appendTo() method.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .appendTo(<jsf>BEAN_swaps</jsf>, TemoralCalendarSwap.BasicIsoDate.<jk>class</jk>)
      .build();
 </p>

 <ul class='seealso'>
   <li class='jc'><a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau"><code>PropertyStore</code></a>
   <li class='jm'><a href="../../../../org/apache/juneau/ContextBuilder.html#set-java.lang.String-java.lang.Object-"><code>ContextBuilder.set(String, Object)</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#appendTo-java.lang.String-java.lang.Object-">appendTo</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - The property name.</dd>
<dd><code>value</code> - The new value to add to the LIST property.
   <br>The valid value types depend on the property type:
   <ul>
      <li><js>"ls"</js> - Any <l>Object</l> converted to a <l>String</l> using <c>value.toString()</c>.
      <li><js>"li"</js> - Any <l>Object</l> converted to an <l>Integer</l> using <c>Integer.<jsm>valueOf</jsm>(value.toString())</c>.
      <li><js>"lc"</js> - Only <l>Class</l> objects are allowed.
      <li><js>"lo"</js> - Left as-is.
   </ul></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="apply-org.apache.juneau.PropertyStore-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>apply</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.160">apply</a>(<a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau">PropertyStore</a>&nbsp;copyFrom)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#apply-org.apache.juneau.PropertyStore-">ContextBuilder</a></code></span></div>
<div class="block">Copies the settings from the specified property store into this builder.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a free-form set of properties.</jc>
   PropertyStore ps = PropertyStore
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_sortMaps</jsf>, <jk>true</jk>)
      .set(<jsf>BEAN_sortProperties</jsf>, <jk>true</jk>)
      .build();

   <jc>// Create a serializer that uses those settings.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .apply(ps)
      .build();
 </p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#apply-org.apache.juneau.PropertyStore-">apply</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>copyFrom</code> - The property store whose settings are being copied.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="applyAnnotations-java.lang.Class...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>applyAnnotations</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.166">applyAnnotations</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;fromClasses)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#applyAnnotations-java.lang.Class...-">ContextBuilder</a></code></span></div>
<div class="block">Applies any of the various <ja>@XConfig</ja> annotations on the specified class to this context.

 <p>
 Any annotations found that themselves are annotated with <a href="../../../../org/apache/juneau/annotation/PropertyStoreApply.html" title="annotation in org.apache.juneau.annotation"><code>PropertyStoreApply</code></a> will be resolved and
 applied as properties to this builder.  These annotations include:
 <ul class='javatree'>
   <li class ='ja'><a href="../../../../org/apache/juneau/annotation/BeanConfig.html" title="annotation in org.apache.juneau.annotation"><code>BeanConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/csv/annotation/CsvConfig.html" title="annotation in org.apache.juneau.csv.annotation"><code>CsvConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/html/annotation/HtmlConfig.html" title="annotation in org.apache.juneau.html.annotation"><code>HtmlConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/html/annotation/HtmlDocConfig.html" title="annotation in org.apache.juneau.html.annotation"><code>HtmlDocConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/jso/annotation/JsoConfig.html" title="annotation in org.apache.juneau.jso.annotation"><code>JsoConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/json/annotation/JsonConfig.html" title="annotation in org.apache.juneau.json.annotation"><code>JsonConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/jsonschema/annotation/JsonSchemaConfig.html" title="annotation in org.apache.juneau.jsonschema.annotation"><code>JsonSchemaConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/msgpack/annotation/MsgPackConfig.html" title="annotation in org.apache.juneau.msgpack.annotation"><code>MsgPackConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/oapi/annotation/OpenApiConfig.html" title="annotation in org.apache.juneau.oapi.annotation"><code>OpenApiConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/parser/annotation/ParserConfig.html" title="annotation in org.apache.juneau.parser.annotation"><code>ParserConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/plaintext/annotation/PlainTextConfig.html" title="annotation in org.apache.juneau.plaintext.annotation"><code>PlainTextConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/serializer/annotation/SerializerConfig.html" title="annotation in org.apache.juneau.serializer.annotation"><code>SerializerConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/soap/annotation/SoapXmlConfig.html" title="annotation in org.apache.juneau.soap.annotation"><code>SoapXmlConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/uon/annotation/UonConfig.html" title="annotation in org.apache.juneau.uon.annotation"><code>UonConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/urlencoding/annotation/UrlEncodingConfig.html" title="annotation in org.apache.juneau.urlencoding.annotation"><code>UrlEncodingConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/xml/annotation/XmlConfig.html" title="annotation in org.apache.juneau.xml.annotation"><code>XmlConfig</code></a>
   <li class ='ja'><c>RdfConfig</c>
 </ul>

 <p>
 Annotations on classes are appended in the following order:
 <ol>
   <li>On the package of this class.
   <li>On interfaces ordered parent-to-child.
   <li>On parent classes ordered parent-to-child.
   <li>On this class.
 </ol>

 <p>
 The default var resolver <a href="../../../../org/apache/juneau/svl/VarResolver.html#DEFAULT"><code>VarResolver.DEFAULT</code></a> is used to resolve any variables in annotation field values.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A class annotated with a config annotation.</jc>
   <ja>@BeanConfig</ja>(sortProperties=<js>"$S{sortProperties,false}"</js>)
   <jk>public class</jk> MyClass {...}

   <jc>// Apply any settings found on the annotations.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .applyAnnotations(MyClass.<jk>class</jk>)
      .build();
 </p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#applyAnnotations-java.lang.Class...-">applyAnnotations</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>fromClasses</code> - The classes on which the annotations are defined.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="applyAnnotations-java.lang.reflect.Method...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>applyAnnotations</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.172">applyAnnotations</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true" title="class or interface in java.lang.reflect">Method</a>...&nbsp;fromMethods)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#applyAnnotations-java.lang.reflect.Method...-">ContextBuilder</a></code></span></div>
<div class="block">Applies any of the various <ja>@XConfig</ja> annotations on the specified method to this context.

 <p>
 Any annotations found that themselves are annotated with <a href="../../../../org/apache/juneau/annotation/PropertyStoreApply.html" title="annotation in org.apache.juneau.annotation"><code>PropertyStoreApply</code></a> will be resolved and
 applied as properties to this builder.  These annotations include:
 <ul class='javatree'>
   <li class ='ja'><a href="../../../../org/apache/juneau/annotation/BeanConfig.html" title="annotation in org.apache.juneau.annotation"><code>BeanConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/csv/annotation/CsvConfig.html" title="annotation in org.apache.juneau.csv.annotation"><code>CsvConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/html/annotation/HtmlConfig.html" title="annotation in org.apache.juneau.html.annotation"><code>HtmlConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/html/annotation/HtmlDocConfig.html" title="annotation in org.apache.juneau.html.annotation"><code>HtmlDocConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/jso/annotation/JsoConfig.html" title="annotation in org.apache.juneau.jso.annotation"><code>JsoConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/json/annotation/JsonConfig.html" title="annotation in org.apache.juneau.json.annotation"><code>JsonConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/jsonschema/annotation/JsonSchemaConfig.html" title="annotation in org.apache.juneau.jsonschema.annotation"><code>JsonSchemaConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/msgpack/annotation/MsgPackConfig.html" title="annotation in org.apache.juneau.msgpack.annotation"><code>MsgPackConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/oapi/annotation/OpenApiConfig.html" title="annotation in org.apache.juneau.oapi.annotation"><code>OpenApiConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/parser/annotation/ParserConfig.html" title="annotation in org.apache.juneau.parser.annotation"><code>ParserConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/plaintext/annotation/PlainTextConfig.html" title="annotation in org.apache.juneau.plaintext.annotation"><code>PlainTextConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/serializer/annotation/SerializerConfig.html" title="annotation in org.apache.juneau.serializer.annotation"><code>SerializerConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/soap/annotation/SoapXmlConfig.html" title="annotation in org.apache.juneau.soap.annotation"><code>SoapXmlConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/uon/annotation/UonConfig.html" title="annotation in org.apache.juneau.uon.annotation"><code>UonConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/urlencoding/annotation/UrlEncodingConfig.html" title="annotation in org.apache.juneau.urlencoding.annotation"><code>UrlEncodingConfig</code></a>
   <li class ='ja'><a href="../../../../org/apache/juneau/xml/annotation/XmlConfig.html" title="annotation in org.apache.juneau.xml.annotation"><code>XmlConfig</code></a>
   <li class ='ja'><c>RdfConfig</c>
 </ul>

 <p>
 Annotations on methods are appended in the following order:
 <ol>
   <li>On the package of the method class.
   <li>On interfaces ordered parent-to-child.
   <li>On parent classes ordered parent-to-child.
   <li>On the method class.
   <li>On this method and matching methods ordered parent-to-child.
 </ol>

 <p>
 The default var resolver <a href="../../../../org/apache/juneau/svl/VarResolver.html#DEFAULT"><code>VarResolver.DEFAULT</code></a> is used to resolve any variables in annotation field values.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A method annotated with a config annotation.</jc>
   <jk>public class</jk> MyClass {
      <ja>@BeanConfig</ja>(sortProperties=<js>"$S{sortProperties,false}"</js>)
      <jk>public void</jk> myMethod() {...}
   }

   <jc>// Apply any settings found on the annotations.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .applyAnnotations(MyClass.<jk>class</jk>.getMethod(<js>"myMethod"</js>))
      .build();
 </p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#applyAnnotations-java.lang.reflect.Method...-">applyAnnotations</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>fromMethods</code> - The methods on which the annotations are defined.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="applyAnnotations-org.apache.juneau.reflect.AnnotationList-org.apache.juneau.svl.VarResolverSession-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>applyAnnotations</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.178">applyAnnotations</a>(<a href="../../../../org/apache/juneau/reflect/AnnotationList.html" title="class in org.apache.juneau.reflect">AnnotationList</a>&nbsp;al,
                                              <a href="../../../../org/apache/juneau/svl/VarResolverSession.html" title="class in org.apache.juneau.svl">VarResolverSession</a>&nbsp;r)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#applyAnnotations-org.apache.juneau.reflect.AnnotationList-org.apache.juneau.svl.VarResolverSession-">ContextBuilder</a></code></span></div>
<div class="block">Applies a set of annotations to this property store.

 <p>
 The <a href="../../../../org/apache/juneau/reflect/AnnotationList.html" title="class in org.apache.juneau.reflect"><code>AnnotationList</code></a> object is an ordered list of annotations and the classes/methods/packages they were found on.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A class annotated with a config annotation.</jc>
   <ja>@BeanConfig</ja>(sortProperties=<js>"$S{sortProperties,false}"</js>)
   <jk>public class</jk> MyClass {...}

   <jc>// Find all annotations that themselves are annotated with @PropertyStoreApply.</jc>
   AnnotationList al = ClassInfo.<jsm>of</jsm>(MyClass.<jk>class</jk>)
      .getAnnotationList(ConfigAnnotationFilter.<jsf>INSTANCE</jsf>);

   <jc>// Use the default VarResolver to resolve any variables in the annotation fields.</jc>
   VarResolverSession vs = VarResolver.<jsf>DEFAULT</jsf>.createSession();

   <jc>// Apply any settings found on the annotations.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .applyAnnotations(al, vs)
      .build();
 </p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#applyAnnotations-org.apache.juneau.reflect.AnnotationList-org.apache.juneau.svl.VarResolverSession-">applyAnnotations</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>al</code> - The list of all annotations annotated with <a href="../../../../org/apache/juneau/annotation/PropertyStoreApply.html" title="annotation in org.apache.juneau.annotation"><code>PropertyStoreApply</code></a>.</dd>
<dd><code>r</code> - The string resolver for resolving variables in annotation values.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="debug--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>debug</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.184">debug</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#debug--">ContextBuilder</a></code></span></div>
<div class="block"><i><l>Context</l> configuration property:&emsp;</i>  Debug mode.

 <p>
 Enables the following additional information during serialization:
 <ul class='spaced-list'>
   <li>
      When bean getters throws exceptions, the exception includes the object stack information
      in order to determine how that method was invoked.
   <li>
      Enables <a href="../../../../org/apache/juneau/BeanTraverseContext.html#BEANTRAVERSE_detectRecursions"><code>BeanTraverseContext.BEANTRAVERSE_detectRecursions</code></a>.
 </ul>

 <p>
 Enables the following additional information during parsing:
 <ul class='spaced-list'>
   <li>
      When bean setters throws exceptions, the exception includes the object stack information
      in order to determine how that method was invoked.
 </ul>

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer with debug enabled.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .debug()
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_debug</jsf>, <jk>true</jk>)
      .build();

   <jc>// Create a POJO model with a recursive loop.</jc>
   <jk>public class</jk> A {
      <jk>public</jk> Object <jf>f</jf>;
   }
   A a = <jk>new</jk> A();
   a.<jf>f</jf> = a;

   <jc>// Throws a SerializeException and not a StackOverflowError</jc>
   String json = s.serialize(a);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/Context.html#CONTEXT_debug"><code>Context.CONTEXT_debug</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#debug--">debug</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="locale-java.util.Locale-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>locale</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.190">locale</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#locale-java.util.Locale-">ContextBuilder</a></code></span></div>
<div class="block"><i><l>Context</l> configuration property:&emsp;</i>  Locale.

 <p>
 Specifies the default locale for serializer and parser sessions when not specified via <a href="../../../../org/apache/juneau/SessionArgs.html#locale-java.util.Locale-"><code>SessionArgs.locale(Locale)</code></a>.
 Typically used for POJO swaps that need to deal with locales such as swaps that convert <l>Date</l> and <l>Calendar</l>
 objects to strings by accessing it via the session passed into the <a href="../../../../org/apache/juneau/transform/PojoSwap.html#swap-org.apache.juneau.BeanSession-T-"><code>PojoSwap.swap(BeanSession, Object)</code></a> and
 <a href="../../../../org/apache/juneau/transform/PojoSwap.html#unswap-org.apache.juneau.BeanSession-S-org.apache.juneau.ClassMeta-java.lang.String-"><code>PojoSwap.unswap(BeanSession, Object, ClassMeta, String)</code></a> methods.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Define a POJO swap that skips serializing beans if we're in the UK.</jc>
   <jk>public class</jk> MyBeanSwap <jk>extends</jk> StringSwap&lt;MyBean&gt; {
      <ja>@Override</ja>
      public String swap(BeanSession session, MyBean o) throws Exception {
         <jk>if</jk> (session.getLocale().equals(Locale.<jsf>UK</jsf>))
            <jk>return null</jk>;
         <jk>return</jk> o.toString();
      }
   }

   <jc>// Create a serializer that uses the specified locale if it's not passed in through session args.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .locale(Locale.<jsf>UK</jsf>)
      .pojoSwaps(MyBeanSwap.<jk>class</jk>)
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>CONTEXT_locale</jsf>, Locale.<jsf>UK</jsf>)
      .addTo(<jsf>BEAN_pojoSwaps</jsf>, MyBeanSwap.<jk>class</jk>)
      .build();

   <jc>// Define on session-args instead.</jc>
   SerializerSessionArgs sessionArgs = <jk>new</jk> SerializerSessionArgs().locale(Locale.<jsf>UK</jsf>);
   <jk>try</jk> (WriterSerializerSession session = s.createSession(sessionArgs)) {

      <jc>// Produces "null" if in the UK.</jc>
      String json = s.serialize(<jk>new</jk> MyBean());
   }
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/Context.html#CONTEXT_locale"><code>Context.CONTEXT_locale</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#locale-java.util.Locale-">locale</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="mediaType-org.apache.juneau.http.MediaType-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>mediaType</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.196">mediaType</a>(<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#mediaType-org.apache.juneau.http.MediaType-">ContextBuilder</a></code></span></div>
<div class="block"><i><l>Context</l> configuration property:&emsp;</i>  Media type.

 <p>
 Specifies the default media type for serializer and parser sessions when not specified via <a href="../../../../org/apache/juneau/SessionArgs.html#mediaType-org.apache.juneau.http.MediaType-"><code>SessionArgs.mediaType(MediaType)</code></a>.
 Typically used for POJO swaps that need to serialize the same POJO classes differently depending on
 the specific requested media type.   For example, a swap could handle a request for media types <js>"application/json"</js>
 and <js>"application/json+foo"</js> slightly differently even though they're both being handled by the same JSON
 serializer or parser.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Define a POJO swap that skips serializing beans if the media type is application/json.</jc>
   <jk>public class</jk> MyBeanSwap <jk>extends</jk> StringSwap&lt;MyBean&gt; {
      <ja>@Override</ja>
      public String swap(BeanSession session, MyBean o) throws Exception {
         <jk>if</jk> (session.getMediaType().equals(<js>"application/json"</js>))
            <jk>return null</jk>;
         <jk>return</jk> o.toString();
      }
   }

   <jc>// Create a serializer that uses the specified media type if it's not passed in through session args.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .mediaType(MediaType.<jsf>JSON</jsf>)
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>CONTEXT_mediaType</jsf>, MediaType.<jsf>JSON</jsf>)
      .build();

   <jc>// Define on session-args instead.</jc>
   SerializerSessionArgs sessionArgs = <jk>new</jk> SerializerSessionArgs().mediaType(MediaType.<jsf>JSON</jsf>);
   <jk>try</jk> (WriterSerializerSession session = s.createSession(sessionArgs)) {

      <jc>// Produces "null" since it's JSON.</jc>
      String json = s.serialize(<jk>new</jk> MyBean());
   }
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/Context.html#CONTEXT_mediaType"><code>Context.CONTEXT_mediaType</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#mediaType-org.apache.juneau.http.MediaType-">mediaType</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="prependTo-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>prependTo</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.202">prependTo</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#prependTo-java.lang.String-java.lang.Object-">ContextBuilder</a></code></span></div>
<div class="block">Adds a free-form value to the beginning of a LIST property.

 <p>
 LIST properties are those properties with one of the following type parts:
 <ul>
   <li><js>"ls"</js> - <c>Linkedlist&lt;String&gt;</c>
   <li><js>"li"</js> - <c>Linkedlist&lt;Integer&gt;</c>
   <li><js>"lc"</js> - <c>Linkedlist&lt;Class&gt;</c>
   <li><js>"lo"</js> - <c>Linkedlist&lt;Object&gt;</c>
 </ul>

 <p>
 For example, the <a href="../../../../org/apache/juneau/BeanContext.html#BEAN_swaps"><code>BeanContext.BEAN_swaps</code></a> property which has the value <js>"BeanContext.swaps.lo"</js>.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that converts Temporal objects to Basic ISO date strings.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .swaps(TemoralCalendarSwap.BasicIsoDate.<jk>class</jk>)
      .build();

   <jc>// Same, but use generic prependTo() method.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .prependTo(<jsf>BEAN_swaps</jsf>, TemoralCalendarSwap.BasicIsoDate.<jk>class</jk>)
      .build();
 </p>

 <ul class='seealso'>
   <li class='jc'><a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau"><code>PropertyStore</code></a>
   <li class='jm'><a href="../../../../org/apache/juneau/ContextBuilder.html#set-java.lang.String-java.lang.Object-"><code>ContextBuilder.set(String, Object)</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#prependTo-java.lang.String-java.lang.Object-">prependTo</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - The property name.</dd>
<dd><code>value</code> - The new value to add to the LIST property.
   <br>The valid value types depend on the property type:
   <ul>
      <li><js>"ls"</js> - Any <l>Object</l> converted to a <l>String</l> using <c>value.toString()</c>.
      <li><js>"li"</js> - Any <l>Object</l> converted to an <l>Integer</l> using <c>Integer.<jsm>valueOf</jsm>(value.toString())</c>.
      <li><js>"lc"</js> - Only <l>Class</l> objects are allowed.
      <li><js>"lo"</js> - Left as-is.
   </ul></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="putAllTo-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>putAllTo</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.208">putAllTo</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#putAllTo-java.lang.String-java.lang.Object-">ContextBuilder</a></code></span></div>
<div class="block">Adds or overwrites multiple free-form entries in a MAP property.

 <p>
 MAP properties are those properties with one of the following type parts:
 <ul>
   <li><js>"sms"</js> - <c>TreeMap&lt;String,String&gt;</c>
   <li><js>"smi"</js> - <c>TreeMap&lt;String,Integer&gt;</c>
   <li><js>"smc"</js> - <c>TreeMap&lt;String,Class&gt;</c>
   <li><js>"smo"</js> - <c>TreeMap&lt;String,Object&gt;</c>
   <li><js>"oms"</js> - <c>LinkedHashMap&lt;String,String&gt;</c>
   <li><js>"omi"</js> - <c>LinkedHashMap&lt;String,Integer&gt;</c>
   <li><js>"omc"</js> - <c>LinkedHashMap&lt;String,Class&gt;</c>
   <li><js>"omo"</js> - <c>LinkedHashMap&lt;String,Object&gt;</c>
 </ul>

 <p>
 For example, the <a href="../../../../org/apache/juneau/BeanContext.html#BEAN_implClasses"><code>BeanContext.BEAN_implClasses</code></a> property which has the value <js>"BeanContext.implClasses.smc"</js>.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that specifies the concrete implementation class for an interface.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .implClass(MyInterface.<jk>class</jk>, MyImplementation.<jk>class</jk>)
      .build();

   <jc>// Same, but use generic putAllTo() method.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .putAllTo(<jsf>BEAN_implClasses</jsf>,
         AMap.<jsm>of</jsm>(MyInterface.<jk>class</jk>.getName(), MyImplementation.<jk>class</jk>)
      )
      .build();
 </p>

 <ul class='seealso'>
   <li class='jc'><a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau"><code>PropertyStore</code></a>
   <li class='jm'><a href="../../../../org/apache/juneau/ContextBuilder.html#set-java.lang.String-java.lang.Object-"><code>ContextBuilder.set(String, Object)</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#putAllTo-java.lang.String-java.lang.Object-">putAllTo</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - The property name.</dd>
<dd><code>value</code> - Either a JSON Object string or a <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><code>Map</code></a> whose valid value types depend on the property type:
   <ul>
      <li><js>"sms"</js>,<js>"oms"</js> - Any <l>Object</l> converted to a <l>String</l> using <c>value.toString()</c>.
      <li><js>"smi"</js>,<js>"omi"</js> - Any <l>Object</l> converted to an <l>Integer</l> using <c>Integer.<jsm>valueOf</jsm>(value.toString())</c>.
      <li><js>"smc"</js>,<js>"omc"</js> - Only <l>Class</l> objects are allowed.
      <li><js>"smo"</js>,<js>"omo"</js> - Left as-is.
   </ul></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="putTo-java.lang.String-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>putTo</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.214">putTo</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#putTo-java.lang.String-java.lang.String-java.lang.Object-">ContextBuilder</a></code></span></div>
<div class="block">Adds or overwrites a free-form entry in a MAP property.

 <p>
 MAP properties are those properties with one of the following type parts:
 <ul>
   <li><js>"sms"</js> - <c>TreeMap&lt;String,String&gt;</c>
   <li><js>"smi"</js> - <c>TreeMap&lt;String,Integer&gt;</c>
   <li><js>"smc"</js> - <c>TreeMap&lt;String,Class&gt;</c>
   <li><js>"smo"</js> - <c>TreeMap&lt;String,Object&gt;</c>
   <li><js>"oms"</js> - <c>LinkedHashMap&lt;String,String&gt;</c>
   <li><js>"omi"</js> - <c>LinkedHashMap&lt;String,Integer&gt;</c>
   <li><js>"omc"</js> - <c>LinkedHashMap&lt;String,Class&gt;</c>
   <li><js>"omo"</js> - <c>LinkedHashMap&lt;String,Object&gt;</c>
 </ul>

 <p>
 For example, the <a href="../../../../org/apache/juneau/BeanContext.html#BEAN_implClasses"><code>BeanContext.BEAN_implClasses</code></a> property which has the value <js>"BeanContext.implClasses.smc"</js>.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that specifies the concrete implementation class for an interface.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .implClass(MyInterface.<jk>class</jk>, MyImplementation.<jk>class</jk>)
      .build();

   <jc>// Same, but use generic putTo() method.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .putTo(<jsf>BEAN_implClasses</jsf>, MyInterface.<jk>class</jk>.getName(), MyImplementation.<jk>class</jk>)
      .build();
 </p>

 <ul class='seealso'>
   <li class='jc'><a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau"><code>PropertyStore</code></a>
   <li class='jm'><a href="../../../../org/apache/juneau/ContextBuilder.html#set-java.lang.String-java.lang.Object-"><code>ContextBuilder.set(String, Object)</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#putTo-java.lang.String-java.lang.String-java.lang.Object-">putTo</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - The property name.</dd>
<dd><code>key</code> - The property value map key.</dd>
<dd><code>value</code> - The property value map value.
   <br>The valid value types depend on the property type:
   <ul>
      <li><js>"sms"</js>,<js>"oms"</js> - Any <l>Object</l> converted to a <l>String</l> using <c>value.toString()</c>.
      <li><js>"smi"</js>,<js>"omi"</js> - Any <l>Object</l> converted to an <l>Integer</l> using <c>Integer.<jsm>valueOf</jsm>(value.toString())</c>.
      <li><js>"smc"</js>,<js>"omc"</js> - Only <l>Class</l> objects are allowed.
      <li><js>"smo"</js>,<js>"omo"</js> - Left as-is.
   </ul></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="removeFrom-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeFrom</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.220">removeFrom</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#removeFrom-java.lang.String-java.lang.Object-">ContextBuilder</a></code></span></div>
<div class="block">Removes a free-form value from a SET, LIST, or MAP property.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that specifies the concrete implementation class for an interface.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .swaps(TemoralCalendarSwap.BasicIsoDate.<jk>class</jk>)
      .build();

   <jc>// Clone the previous serializer but remove the swap.</jc>
   s = s
      .<jsm>builder</jsm>()
      .removeFrom(<jsf>BEAN_swaps</jsf>, TemoralCalendarSwap.BasicIsoDate.<jk>class</jk>)
      .build();
 </p>

 <ul class='seealso'>
   <li class='jc'><a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau"><code>PropertyStore</code></a>
   <li class='jm'><a href="../../../../org/apache/juneau/ContextBuilder.html#set-java.lang.String-java.lang.Object-"><code>ContextBuilder.set(String, Object)</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#removeFrom-java.lang.String-java.lang.Object-">removeFrom</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - The property name.</dd>
<dd><code>value</code> - The property value in the SET/LIST/MAP property.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="set-java.util.Map-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>set</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.226">set</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;properties)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#set-java.util.Map-">ContextBuilder</a></code></span></div>
<div class="block">Sets multiple free-form configuration properties on this object replacing all previous values.

 <p>
 Identical in function to <a href="../../../../org/apache/juneau/ContextBuilder.html#set-java.lang.String-java.lang.Object-"><code>ContextBuilder.set(String, Object)</code></a> but allows you to specify multiple values at once.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that sorts maps and bean properties.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .sortMaps()
      .sortProperties()
      .build();

   <jc>// Same, but use generic set(Map) method.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(
         AMap.<jsm>of</jsm>(
            <jsf>BEAN_sortMaps</jsf>, <jk>true</jk>,
            <jsf>BEAN_sortProperties</jsf>, <jk>true</jk>
         )
      )
      .build();
 </p>

 <ul class='seealso'>
   <li class='jc'><a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau"><code>PropertyStore</code></a>
   <li class='jm'><a href="../../../../org/apache/juneau/ContextBuilder.html#set-java.lang.String-java.lang.Object-"><code>ContextBuilder.set(String, Object)</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#set-java.util.Map-">set</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>properties</code> - The properties to set on this class.
   <br>The keys must be strings.
   <br>The valid value types depend on the property type:
   <ul>
      <li><js>"s"</js> - Any <l>Object</l> converted to a <l>String</l> using <c>value.toString()</c>.
      <li><js>"b"</js> - Any <l>Object</l> converted to a <l>Boolean</l> using <c>Boolean.<jsm>parseBoolean</jsm>(value.toString())</c>.
      <li><js>"i"</js> - Any <l>Object</l> converted to an <l>Integer</l> using <c>Integer.<jsm>valueOf</jsm>(value.toString())</c>.
      <li><js>"c"</js> - Only <l>Class</l> objects are allowed.
      <li><js>"o"</js> - Left as-is.
      <li><js>"ss"</js>,<js>"si"</js>,<js>"sc"</js> - Any collection or array of any convertible <l>Objects</l> or a JSON Array string.
      <li><js>"ls"</js>,<js>"li"</js>,<js>"lc"</js>,<js>"lo"</js> - Any collection or array of any convertible <l>Objects</l> or a JSON Array string.
      <li><js>"sms"</js>,<js>"smi"</js>,<js>"smc"</js>,<js>"smo"</js> - Any sorted map of any convertible <l>Objects</l> or a JSON Object string.
      <li><js>"oms"</js>,<js>"omi"</js>,<js>"omc"</js>,<js>"omo"</js> - Any ordered map of any convertible <l>Objects</l> or a JSON Object string.
   </ul></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="set-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>set</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.232">set</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#set-java.lang.String-java.lang.Object-">ContextBuilder</a></code></span></div>
<div class="block">Sets a free-form configuration property on this object.

 <p>
 Provides the ability to specify configuration property values in a generic fashion.

 <p>
 Property names must have the following format that identify their datatype...
 <p class='bcode w800'>
   <js>"{class}.{name}.{type}"</js>
 </p>
 <p>
 ...where the parts consist of the following...
 <ul>
   <li><js>"{class}"</js> - The group name of the property (e.g. <js>"JsonSerializer"</js>).
      <br>It's always going to be the simple class name of the class it's associated with.
   <li><js>"{name}"</js> - The property name (e.g. <js>"useWhitespace"</js>).
   <li><js>"{type}"</js> - The property data type.
      <br>A 1 or 2 character string that identifies the data type of the property.
      <br>Valid values are:
      <ul>
         <li><js>"s"</js> - <c>String</c>
         <li><js>"b"</js> - <c>Boolean</c>
         <li><js>"i"</js> - <c>Integer</c>
         <li><js>"c"</js> - <c>Class</c>
         <li><js>"o"</js> - <c>Object</c>
         <li><js>"ss"</js> - <c>TreeSet&lt;String&gt;</c>
         <li><js>"si"</js> - <c>TreeSet&lt;Integer&gt;</c>
         <li><js>"sc"</js> - <c>TreeSet&lt;Class&gt;</c>
         <li><js>"ls"</js> - <c>Linkedlist&lt;String&gt;</c>
         <li><js>"li"</js> - <c>Linkedlist&lt;Integer&gt;</c>
         <li><js>"lc"</js> - <c>Linkedlist&lt;Class&gt;</c>
         <li><js>"lo"</js> - <c>Linkedlist&lt;Object&gt;</c>
         <li><js>"sms"</js> - <c>TreeMap&lt;String,String&gt;</c>
         <li><js>"smi"</js> - <c>TreeMap&lt;String,Integer&gt;</c>
         <li><js>"smc"</js> - <c>TreeMap&lt;String,Class&gt;</c>
         <li><js>"smo"</js> - <c>TreeMap&lt;String,Object&gt;</c>
         <li><js>"oms"</js> - <c>LinkedHashMap&lt;String,String&gt;</c>
         <li><js>"omi"</js> - <c>LinkedHashMap&lt;String,Integer&gt;</c>
         <li><js>"omc"</js> - <c>LinkedHashMap&lt;String,Class&gt;</c>
         <li><js>"omo"</js> - <c>LinkedHashMap&lt;String,Object&gt;</c>
      </ul>
 </ul>

 <p>
 For example, <js>"BeanContext.swaps.lc"</js> refers to a property on the <l>BeanContext</l> class
 called <l>swaps</l> that has a data type of <l>List&lt;Class&gt;</l>.

 <p>
 Property values get 'normalized' when they get set.
 For example, calling <c>set(<js>"BeanContext.debug.b"</js>, <js>"true"</js>)</c> will cause the property
 value to be converted to a boolean.  This allows the underlying <a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau"><code>PropertyStore</code></a> class to be comparable
 and useful in determining whether a cached instance of a context object can be returned.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that sorts maps and bean properties.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .sortMaps()
      .sortProperties()
      .build();

   <jc>// Same, but use generic set() method.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_sortMaps</jsf>, <jk>true</jk>)
      .set(<jsf>BEAN_sortProperties</jsf>, <jk>true</jk>)
      .build();
 </p>

 <p>
 As a general rule, builders don't typically have "unsetter" methods.  For example, once you've set strict
 mode on the <l>ParserBuilder</l> class, a method does not exist for unsetting it.
 This method can be used in these rare cases where you need to unset a value by setting it to <jk>null</jk>.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Clone an existing serializer and unset the sort settings.</jc>
   s = s.<jsm>builder</jsm>()
      .set(<jsf>BEAN_sortMaps</jsf>, <jk>null</jk>)
      .set(<jsf>BEAN_sortProperties</jsf>, <jk>null</jk>)
      .build();
 </p>

 <ul class='seealso'>
   <li class='jc'><a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau"><code>PropertyStore</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#set-java.lang.String-java.lang.Object-">set</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - The property name.</dd>
<dd><code>value</code> - The property value.
   <br>The valid value types depend on the property type:
   <ul>
      <li><js>"s"</js> - Any <l>Object</l> converted to a <l>String</l> using <c>value.toString()</c>.
      <li><js>"b"</js> - Any <l>Object</l> converted to a <l>Boolean</l> using <c>Boolean.<jsm>parseBoolean</jsm>(value.toString())</c>.
      <li><js>"i"</js> - Any <l>Object</l> converted to an <l>Integer</l> using <c>Integer.<jsm>valueOf</jsm>(value.toString())</c>.
      <li><js>"c"</js> - Only <l>Class</l> objects are allowed.
      <li><js>"o"</js> - Left as-is.
      <li><js>"ss"</js>,<js>"si"</js>,<js>"sc"</js> - Any collection or array of any convertible <l>Objects</l> or a JSON Array string.
      <li><js>"ls"</js>,<js>"li"</js>,<js>"lc"</js>,<js>"lo"</js> - Any collection or array of any convertible <l>Objects</l> or a JSON Array string.
      <li><js>"sms"</js>,<js>"smi"</js>,<js>"smc"</js>,<js>"smo"</js> - Any sorted map of any convertible <l>Objects</l> or a JSON Object string.
      <li><js>"oms"</js>,<js>"omi"</js>,<js>"omc"</js>,<js>"omo"</js> - Any ordered map of any convertible <l>Objects</l> or a JSON Object string.
   </ul></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="timeZone-java.util.TimeZone-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>timeZone</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.238">timeZone</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/TimeZone.html?is-external=true" title="class or interface in java.util">TimeZone</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/ContextBuilder.html#timeZone-java.util.TimeZone-">ContextBuilder</a></code></span></div>
<div class="block"><i><l>Context</l> configuration property:&emsp;</i>  TimeZone.

 <p>
 Specifies the default time zone for serializer and parser sessions when not specified via <a href="../../../../org/apache/juneau/SessionArgs.html#timeZone-java.util.TimeZone-"><code>SessionArgs.timeZone(TimeZone)</code></a>.
 Typically used for POJO swaps that need to deal with timezones such as swaps that convert <l>Date</l> and <l>Calendar</l>
 objects to strings by accessing it via the session passed into the <a href="../../../../org/apache/juneau/transform/PojoSwap.html#swap-org.apache.juneau.BeanSession-T-"><code>PojoSwap.swap(BeanSession, Object)</code></a> and
 <a href="../../../../org/apache/juneau/transform/PojoSwap.html#unswap-org.apache.juneau.BeanSession-S-org.apache.juneau.ClassMeta-java.lang.String-"><code>PojoSwap.unswap(BeanSession, Object, ClassMeta, String)</code></a> methods.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Define a POJO swap that skips serializing beans if the time zone is GMT.</jc>
   <jk>public class</jk> MyBeanSwap <jk>extends</jk> StringSwap&lt;MyBean&gt; {
      <ja>@Override</ja>
      public String swap(BeanSession session, MyBean o) throws Exception {
         <jk>if</jk> (session.getTimeZone().equals(TimeZone.<jsf>GMT</jsf>))
            <jk>return null</jk>;
         <jk>return</jk> o.toString();
      }
   }

   <jc>// Create a serializer that uses GMT if the timezone is not specified in the session args.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .timeZone(TimeZone.<jsf>GMT</jsf>)
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>CONTEXT_timeZone</jsf>, TimeZone.<jsf>GMT</jsf>)
      .build();

   <jc>// Define on session-args instead.</jc>
   SerializerSessionArgs sessionArgs = <jk>new</jk> SerializerSessionArgs().timeZone(TimeZone.<jsf>GMT</jsf>);
   <jk>try</jk> (WriterSerializerSession ss = JsonSerializer.<jsf>DEFAULT</jsf>.createSession(sessionArgs)) {

      <jc>// Produces "null" since the time zone is GMT.</jc>
      String json = s.serialize(<jk>new</jk> MyBean());
   }
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/Context.html#CONTEXT_timeZone"><code>Context.CONTEXT_timeZone</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#timeZone-java.util.TimeZone-">timeZone</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="annotations-java.lang.annotation.Annotation...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>annotations</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.244">annotations</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>...&nbsp;values)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#annotations-java.lang.annotation.Annotation...-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Dynamically applied POJO annotations.

 <p>
 Defines annotations to apply to specific classes and methods.

 <p>
 Allows you to dynamically apply Juneau annotations typically applied directly to classes and methods.
 Useful in cases where you want to use the functionality of the annotation on beans and bean properties but
 do not have access to the code to do so.

 <p>
 As a rule, any Juneau annotation with an <c>on()</c> method can be used with this property.

 <p>
 The following example shows the equivalent methods for applying the <a href="../../../../org/apache/juneau/annotation/Bean.html" title="annotation in org.apache.juneau.annotation"><code>@Bean</code></a> annotation:
 <p class='bcode w800'>
   <jc>// Class with explicit annotation.</jc>
   <ja>@Bean</ja>(bpi=<js>"street,city,state"</js>)
   <jk>public class</jk> A {...}

   <jc>// Class with annotation applied via @BeanConfig</jc>
   <jk>public class</jk> B {...}

   <jc>// Java REST method with @BeanConfig annotation.</jc>
   <ja>@RestMethod</ja>(...)
   <ja>@BeanConfig</ja>(
      annotations={
         <ja>@Bean</ja>(on=<js>"B"</js>, bpi=<js>"street,city,state"</js>)
      }
   )
   <jk>public void</jk> doFoo() {...}
 </p>

 <p>
 In general, the underlying framework uses this method when it finds dynamically applied annotations on
 config annotations.  However, concrete implementations of annotations are also provided that can be passed
 directly into builder classes like so:
 <p class='bcode w800'>
   <jc>// Create a concrete @Bean annotation.</jc>
   BeanAnnotation a = <jk>new</jk> BeanAnnotation(<js>"B"</js>).bpi(<js>"street,city,state"</js>);

   <jc>// Apply it to a serializer.</jc>
   WriterSerializer ws = JsonSerializer.<jsm>create</jsm>().annotations(a).build();

   <jc>// Serialize a bean with the dynamically applied annotation.</jc>
   String json = ws.serialize(<jk>new</jk> B());
 </p>

 <p>
 The following is the list of concrete annotations provided that can be constructed and passed into the builder
 class:
 <ul class='javatree'>
   <li class='ja'><a href="../../../../org/apache/juneau/annotation/BeanAnnotation.html" title="class in org.apache.juneau.annotation"><code>BeanAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/annotation/BeancAnnotation.html" title="class in org.apache.juneau.annotation"><code>BeancAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/annotation/BeanIgnoreAnnotation.html" title="class in org.apache.juneau.annotation"><code>BeanIgnoreAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/annotation/BeanpAnnotation.html" title="class in org.apache.juneau.annotation"><code>BeanpAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/annotation/ExampleAnnotation.html" title="class in org.apache.juneau.annotation"><code>ExampleAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/annotation/NamePropertyAnnotation.html" title="class in org.apache.juneau.annotation"><code>NamePropertyAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/annotation/ParentPropertyAnnotation.html" title="class in org.apache.juneau.annotation"><code>ParentPropertyAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/annotation/SwapAnnotation.html" title="class in org.apache.juneau.annotation"><code>SwapAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/annotation/UriAnnotation.html" title="class in org.apache.juneau.annotation"><code>UriAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/csv/annotation/CsvAnnotation.html" title="class in org.apache.juneau.csv.annotation"><code>CsvAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/html/annotation/HtmlAnnotation.html" title="class in org.apache.juneau.html.annotation"><code>HtmlAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/jso/annotation/JsoAnnotation.html" title="class in org.apache.juneau.jso.annotation"><code>JsoAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/json/annotation/JsonAnnotation.html" title="class in org.apache.juneau.json.annotation"><code>JsonAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/jsonschema/annotation/SchemaAnnotation.html" title="class in org.apache.juneau.jsonschema.annotation"><code>SchemaAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/msgpack/annotation/MsgPackAnnotation.html" title="class in org.apache.juneau.msgpack.annotation"><code>MsgPackAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/oapi/annotation/OpenApiAnnotation.html" title="class in org.apache.juneau.oapi.annotation"><code>OpenApiAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/plaintext/annotation/PlainTextAnnotation.html" title="class in org.apache.juneau.plaintext.annotation"><code>PlainTextAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/soap/annotation/SoapXmlAnnotation.html" title="class in org.apache.juneau.soap.annotation"><code>SoapXmlAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/uon/annotation/UonAnnotation.html" title="class in org.apache.juneau.uon.annotation"><code>UonAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/urlencoding/annotation/UrlEncodingAnnotation.html" title="class in org.apache.juneau.urlencoding.annotation"><code>UrlEncodingAnnotation</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/xml/annotation/XmlAnnotation.html" title="class in org.apache.juneau.xml.annotation"><code>XmlAnnotation</code></a>
 </ul>

 <p>
 The syntax for the <l>on()</l> pattern match parameter depends on whether it applies to a class, method, field, or constructor.
 The valid pattern matches are:
 <ul class='spaced-list'>
  <li>Classes:
      <ul>
         <li>Fully qualified:
            <ul>
               <li><js>"com.foo.MyClass"</js>
            </ul>
         <li>Fully qualified inner class:
            <ul>
               <li><js>"com.foo.MyClass$Inner1$Inner2"</js>
            </ul>
         <li>Simple:
            <ul>
               <li><js>"MyClass"</js>
            </ul>
         <li>Simple inner:
            <ul>
               <li><js>"MyClass$Inner1$Inner2"</js>
               <li><js>"Inner1$Inner2"</js>
               <li><js>"Inner2"</js>
            </ul>
      </ul>
   <li>Methods:
      <ul>
         <li>Fully qualified with args:
            <ul>
               <li><js>"com.foo.MyClass.myMethod(String,int)"</js>
               <li><js>"com.foo.MyClass.myMethod(java.lang.String,int)"</js>
               <li><js>"com.foo.MyClass.myMethod()"</js>
            </ul>
         <li>Fully qualified:
            <ul>
               <li><js>"com.foo.MyClass.myMethod"</js>
            </ul>
         <li>Simple with args:
            <ul>
               <li><js>"MyClass.myMethod(String,int)"</js>
               <li><js>"MyClass.myMethod(java.lang.String,int)"</js>
               <li><js>"MyClass.myMethod()"</js>
            </ul>
         <li>Simple:
            <ul>
               <li><js>"MyClass.myMethod"</js>
            </ul>
         <li>Simple inner class:
            <ul>
               <li><js>"MyClass$Inner1$Inner2.myMethod"</js>
               <li><js>"Inner1$Inner2.myMethod"</js>
               <li><js>"Inner2.myMethod"</js>
            </ul>
      </ul>
   <li>Fields:
      <ul>
         <li>Fully qualified:
            <ul>
               <li><js>"com.foo.MyClass.myField"</js>
            </ul>
         <li>Simple:
            <ul>
               <li><js>"MyClass.myField"</js>
            </ul>
         <li>Simple inner class:
            <ul>
               <li><js>"MyClass$Inner1$Inner2.myField"</js>
               <li><js>"Inner1$Inner2.myField"</js>
               <li><js>"Inner2.myField"</js>
            </ul>
      </ul>
   <li>Constructors:
      <ul>
         <li>Fully qualified with args:
            <ul>
               <li><js>"com.foo.MyClass(String,int)"</js>
               <li><js>"com.foo.MyClass(java.lang.String,int)"</js>
               <li><js>"com.foo.MyClass()"</js>
            </ul>
         <li>Simple with args:
            <ul>
               <li><js>"MyClass(String,int)"</js>
               <li><js>"MyClass(java.lang.String,int)"</js>
               <li><js>"MyClass()"</js>
            </ul>
         <li>Simple inner class:
            <ul>
               <li><js>"MyClass$Inner1$Inner2()"</js>
               <li><js>"Inner1$Inner2()"</js>
               <li><js>"Inner2()"</js>
            </ul>
      </ul>
   <li>A comma-delimited list of anything on this list.
 </ul>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_annotations"><code>BeanContext.BEAN_annotations</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#annotations-java.lang.annotation.Annotation...-">annotations</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>values</code> - The values to add to this property.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="beanClassVisibility-org.apache.juneau.Visibility-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>beanClassVisibility</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.250">beanClassVisibility</a>(<a href="../../../../org/apache/juneau/Visibility.html" title="enum in org.apache.juneau">Visibility</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanClassVisibility-org.apache.juneau.Visibility-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Minimum bean class visibility.

 <p>
 Classes are not considered beans unless they meet the minimum visibility requirements.
 For example, if the visibility is <jsf>PUBLIC</jsf> and the bean class is <jk>protected</jk>, then the class
 will not be interpreted as a bean class and be serialized as a string.
 Use this setting to reduce the visibility requirement.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with a protected class and one field.</jc>
   <jk>protected class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf> = <js>"bar"</js>;
   }

   <jc>// Create a serializer that's capable of serializing the class.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .beanClassVisibility(<jsf>PROTECTED</jsf>)
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_beanClassVisibility</jsf>, <js>"PROTECTED"</js>)
      .build();

   <jc>// Produces:  {"foo","bar"}</jc>
   String json = w.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='notes'>
   <li>The <a href="../../../../org/apache/juneau/annotation/Bean.html" title="annotation in org.apache.juneau.annotation"><code>@Bean</code></a> annotation can be used on a non-public bean class to override this setting.
   <li>The <a href="../../../../org/apache/juneau/annotation/BeanIgnore.html" title="annotation in org.apache.juneau.annotation"><code>@BeanIgnore</code></a> annotation can also be used on a public bean class to ignore it as a bean.
 </ul>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_beanClassVisibility"><code>BeanContext.BEAN_beanClassVisibility</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#beanClassVisibility-org.apache.juneau.Visibility-">beanClassVisibility</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.
   <br>The default is <a href="../../../../org/apache/juneau/Visibility.html#PUBLIC"><code>Visibility.PUBLIC</code></a>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="beanConstructorVisibility-org.apache.juneau.Visibility-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>beanConstructorVisibility</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.256">beanConstructorVisibility</a>(<a href="../../../../org/apache/juneau/Visibility.html" title="enum in org.apache.juneau">Visibility</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanConstructorVisibility-org.apache.juneau.Visibility-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Minimum bean constructor visibility.

 <p>
 Only look for constructors with the specified minimum visibility.

 <p>
 This setting affects the logic for finding no-arg constructors for bean.  Normally, only <jk>public</jk> no-arg
 constructors are used.  Use this setting if you want to reduce the visibility requirement.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with a protected constructor and one field.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf>;

      <jk>protected</jk> MyBean() {}
   }

   <jc>// Create a parser capable of calling the protected constructor.</jc>
   ReaderParser p = ReaderParser
      .<jsm>create</jsm>()
      .beanConstructorVisibility(<jsf>PROTECTED</jsf>)
      .build();

   <jc>// Same, but use property.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_beanConstructorVisibility</jsf>, <js>"PROTECTED"</js>)
      .build();

   <jc>// Use it.</jc>
   MyBean c = r.parse(<js>"{foo:'bar'}"</js>, MyBean.<jk>class</jk>);
 </p>

 <ul class='notes'>
   <li>The <a href="../../../../org/apache/juneau/annotation/Beanc.html" title="annotation in org.apache.juneau.annotation"><code>@Beanc</code></a> annotation can also be used to expose a non-public constructor.
   <li>The <a href="../../../../org/apache/juneau/annotation/BeanIgnore.html" title="annotation in org.apache.juneau.annotation"><code>@BeanIgnore</code></a> annotation can also be used on a public bean constructor to ignore it.
 </ul>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_beanConstructorVisibility"><code>BeanContext.BEAN_beanConstructorVisibility</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#beanConstructorVisibility-org.apache.juneau.Visibility-">beanConstructorVisibility</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.
   <br>The default is <a href="../../../../org/apache/juneau/Visibility.html#PUBLIC"><code>Visibility.PUBLIC</code></a>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="beanFieldVisibility-org.apache.juneau.Visibility-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>beanFieldVisibility</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.262">beanFieldVisibility</a>(<a href="../../../../org/apache/juneau/Visibility.html" title="enum in org.apache.juneau">Visibility</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanFieldVisibility-org.apache.juneau.Visibility-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Minimum bean field visibility.

 <p>
 Only look for bean fields with the specified minimum visibility.

 <p>
 This affects which fields on a bean class are considered bean properties.  Normally only <jk>public</jk> fields are considered.
 Use this setting if you want to reduce the visibility requirement.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with a protected field.</jc>
   <jk>public class</jk> MyBean {
      <jk>protected</jk> String <jf>foo</jf> = <js>"bar"</js>;
   }

   <jc>// Create a serializer that recognizes the protected field.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .beanFieldVisibility(<jsf>PROTECTED</jsf>)
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_beanFieldVisibility</jsf>, <js>"PROTECTED"</js>)
      .build();

   <jc>// Produces:  {"foo":"bar"}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <p>
 Bean fields can be ignored as properties entirely by setting the value to <a href="../../../../org/apache/juneau/Visibility.html#NONE"><code>Visibility.NONE</code></a>

 <p class='bcode w800'>
   <jc>// Disable using fields as properties entirely.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .beanFieldVisibility(<jsf>NONE</jsf>)
      .build();
 </p>

 <ul class='notes'>
   <li>The <a href="../../../../org/apache/juneau/annotation/Beanp.html" title="annotation in org.apache.juneau.annotation"><code>@Beanp</code></a> annotation can also be used to expose a non-public field.
   <li>The <a href="../../../../org/apache/juneau/annotation/BeanIgnore.html" title="annotation in org.apache.juneau.annotation"><code>@BeanIgnore</code></a> annotation can also be used on a public bean field to ignore it as a bean property.
 </ul>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_beanFieldVisibility"><code>BeanContext.BEAN_beanFieldVisibility</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#beanFieldVisibility-org.apache.juneau.Visibility-">beanFieldVisibility</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.
   <br>The default is <a href="../../../../org/apache/juneau/Visibility.html#PUBLIC"><code>Visibility.PUBLIC</code></a>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="beanInterceptor-java.lang.Class-java.lang.Class-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>beanInterceptor</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.268">beanInterceptor</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;on,
                                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/transform/BeanInterceptor.html" title="class in org.apache.juneau.transform">BeanInterceptor</a>&lt;?&gt;&gt;&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanInterceptor-java.lang.Class-java.lang.Class-">BeanContextBuilder</a></code></span></div>
<div class="block">Bean interceptor.

 <p>
 Bean interceptors can be used to intercept calls to getters and setters and alter their values in transit.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Interceptor that strips out sensitive information.</jc>
   <jk>public class</jk> AddressInterceptor <jk>extends</jk> BeanInterceptor&lt;Address&gt; {

      <jk>public</jk> Object readProperty(Address bean, String name, Object value) {
         <jk>if</jk> (<js>"taxInfo"</js>.equals(name))
            <jk>return</jk> <js>"redacted"</js>;
         <jk>return</jk> value;
      }

      <jk>public</jk> Object writeProperty(Address bean, String name, Object value) {
         <jk>if</jk> (<js>"taxInfo"</js>.equals(name) &amp;&amp; <js>"redacted"</js>.equals(value))
            <jk>return</jk> TaxInfoUtils.<jsm>lookup</jsm>(bean.getStreet(), bean.getCity(), bean.getState());
         <jk>return</jk> value;
      }
   }

   <jc>// Our bean class.</jc>
   <jk>public class</jk> Address {
      <jk>public</jk> String getTaxInfo() {...}
      <jk>public void</jk> setTaxInfo(String s) {...}
   }

   <jc>// Register filter on serializer or parser.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .beanInterceptor(Address.<jk>class</jk>, AddressInterceptor.<jk>class</jk>)
      .build();

   <jc>// Produces:  {"taxInfo":"redacted"}</jc>
   String json = s.serialize(<jk>new</jk> Address());
 </p>

 <ul class='seealso'>
   <li class='jc'><a href="../../../../org/apache/juneau/transform/BeanInterceptor.html" title="class in org.apache.juneau.transform"><code>BeanInterceptor</code></a>
   <li class='ja'><a href="../../../../org/apache/juneau/annotation/Bean.html#interceptor--"><code>Bean(interceptor)</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#beanInterceptor-java.lang.Class-java.lang.Class-">beanInterceptor</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>on</code> - The bean that the filter applies to.</dd>
<dd><code>value</code> - The new value for this property.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="beanMapPutReturnsOldValue--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>beanMapPutReturnsOldValue</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.274">beanMapPutReturnsOldValue</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanMapPutReturnsOldValue--">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  BeanMap.put() returns old property value.

 <p>
 When enabled, then the <a href="../../../../org/apache/juneau/BeanMap.html#put-java.lang.String-java.lang.Object-"><code>BeanMap.put()</code></a> method will return old property
 values.  Otherwise, it returns <jk>null</jk>.

 <p>
 Disabled by default because it introduces a slight performance penalty during serialization.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that creates BeanMaps with normal put() behavior.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .beanMapPutReturnsOldValue()
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_beanMapPutReturnsOldValue</jsf>, <jk>true</jk>)
      .build();

   BeanMap&lt;MyBean&gt; bm = s.createSession().toBeanMap(<jk>new</jk> MyBean());
   bm.put(<js>"foo"</js>, <js>"bar"</js>);
   Object oldValue = bm.put(<js>"foo"</js>, <js>"baz"</js>);  <jc>// oldValue == "bar"</jc>
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_beanMapPutReturnsOldValue"><code>BeanContext.BEAN_beanMapPutReturnsOldValue</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#beanMapPutReturnsOldValue--">beanMapPutReturnsOldValue</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="beanMethodVisibility-org.apache.juneau.Visibility-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>beanMethodVisibility</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.280">beanMethodVisibility</a>(<a href="../../../../org/apache/juneau/Visibility.html" title="enum in org.apache.juneau">Visibility</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beanMethodVisibility-org.apache.juneau.Visibility-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Minimum bean method visibility.

 <p>
 Only look for bean methods with the specified minimum visibility.

 <p>
 This affects which methods are detected as getters and setters on a bean class. Normally only <jk>public</jk> getters and setters are considered.
 Use this setting if you want to reduce the visibility requirement.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with a protected getter.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String getFoo() { <jk>return</jk> <js>"foo"</js>; }
      <jk>protected</jk> String getBar() { <jk>return</jk> <js>"bar"</js>; }
   }

   <jc>// Create a serializer that looks for protected getters and setters.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .beanMethodVisibility(<jsf>PROTECTED</jsf>)
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_beanMethodVisibility</jsf>, <js>"PROTECTED"</js>)
      .build();

   <jc>// Produces:  {"foo":"foo","bar":"bar"}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='notes'>
   <li>The <a href="../../../../org/apache/juneau/annotation/Beanp.html" title="annotation in org.apache.juneau.annotation"><code>@Beanp</code></a> annotation can also be used to expose a non-public method.
   <li>The <a href="../../../../org/apache/juneau/annotation/BeanIgnore.html" title="annotation in org.apache.juneau.annotation"><code>@BeanIgnore</code></a> annotation can also be used on a public bean getter/setter to ignore it as a bean property.
 </ul>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_beanMethodVisibility"><code>BeanContext.BEAN_beanMethodVisibility</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#beanMethodVisibility-org.apache.juneau.Visibility-">beanMethodVisibility</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.
   <br>The default is <a href="../../../../org/apache/juneau/Visibility.html#PUBLIC"><code>Visibility.PUBLIC</code></a></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="beansDontRequireSomeProperties--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>beansDontRequireSomeProperties</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.286">beansDontRequireSomeProperties</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beansDontRequireSomeProperties--">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Beans require at least one property.

 <p>
 When enabled, then a Java class must contain at least 1 property to be considered a bean.
 Otherwise, the bean will be serialized as a string using the <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang"><code>Object.toString()</code></a> method.

 <p>
 The <a href="../../../../org/apache/juneau/annotation/Bean.html" title="annotation in org.apache.juneau.annotation"><code>@Bean</code></a> annotation can be used on a class to override this setting when <jk>true</jk>.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with no properties.</jc>
   <jk>public class</jk> MyBean {
   }

   <jc>// Create a serializer that serializes beans even if they have zero properties.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .beansDontRequireSomeProperties()
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_beansRequireSomeProperties</jsf>, <jk>false</jk>)
      .build();

   <jc>// Produces:  {}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='notes'>
   <li>The <a href="../../../../org/apache/juneau/annotation/Bean.html" title="annotation in org.apache.juneau.annotation"><code>@Bean</code></a> annotation can be used on the class to force it to be recognized as a bean class
      even if it has no properties.
 </ul>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_beansRequireSomeProperties"><code>BeanContext.BEAN_beansRequireSomeProperties</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#beansDontRequireSomeProperties--">beansDontRequireSomeProperties</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="beansRequireDefaultConstructor--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>beansRequireDefaultConstructor</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.292">beansRequireDefaultConstructor</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beansRequireDefaultConstructor--">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Beans require no-arg constructors.

 <p>
 When enabled, a Java class must implement a default no-arg constructor to be considered a bean.
 Otherwise, the bean will be serialized as a string using the <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang"><code>Object.toString()</code></a> method.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean without a no-arg constructor.</jc>
   <jk>public class</jk> MyBean {

      <jc>// A property method.</jc>
      <jk>public</jk> String <jf>foo</jf> = <js>"bar"</js>;

      <jc>// A no-arg constructor</jc>
      <jk>public</jk> MyBean(String foo) {
         <jk>this</jk>.<jf>foo</jf> = foo;
      }

      <ja>@Override</ja>
      <jk>public</jk> String toString() {
         <jk>return</jk> <js>"bar"</js>;
      }
   }

   <jc>// Create a serializer that ignores beans without default constructors.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .beansRequireDefaultConstructor()
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_beansRequireDefaultConstructor</jsf>, <jk>true</jk>)
      .build();

   <jc>// Produces:  "bar"</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='notes'>
   <li>The <a href="../../../../org/apache/juneau/annotation/Bean.html" title="annotation in org.apache.juneau.annotation"><code>@Bean</code></a> annotation can be used on a bean class to override this setting.
   <li>The <a href="../../../../org/apache/juneau/annotation/BeanIgnore.html" title="annotation in org.apache.juneau.annotation"><code>@BeanIgnore</code></a> annotation can also be used on a class to ignore it as a bean.
 </ul>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_beansRequireDefaultConstructor"><code>BeanContext.BEAN_beansRequireDefaultConstructor</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#beansRequireDefaultConstructor--">beansRequireDefaultConstructor</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="beansRequireSerializable--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>beansRequireSerializable</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.298">beansRequireSerializable</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beansRequireSerializable--">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Beans require Serializable interface.

 <p>
 When enabled, a Java class must implement the <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io"><code>Serializable</code></a> interface to be considered a bean.
 Otherwise, the bean will be serialized as a string using the <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang"><code>Object.toString()</code></a> method.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean without a Serializable interface.</jc>
   <jk>public class</jk> MyBean {

      <jc>// A property method.</jc>
      <jk>public</jk> String <jf>foo</jf> = <js>"bar"</js>;

      <ja>@Override</ja>
      <jk>public</jk> String toString() {
         <jk>return</jk> <js>"bar"</js>;
      }
   }

   <jc>// Create a serializer that ignores beans not implementing Serializable.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .beansRequireSerializable()
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_beansRequireSerializable</jsf>, <jk>true</jk>)
      .build();

   <jc>// Produces:  "bar"</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='notes'>
   <li>The <a href="../../../../org/apache/juneau/annotation/Bean.html" title="annotation in org.apache.juneau.annotation"><code>@Bean</code></a> annotation can be used on a bean class to override this setting.
   <li>The <a href="../../../../org/apache/juneau/annotation/BeanIgnore.html" title="annotation in org.apache.juneau.annotation"><code>@BeanIgnore</code></a> annotation can also be used on a class to ignore it as a bean.
 </ul>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_beansRequireSerializable"><code>BeanContext.BEAN_beansRequireSerializable</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#beansRequireSerializable--">beansRequireSerializable</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="beansRequireSettersForGetters--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>beansRequireSettersForGetters</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.304">beansRequireSettersForGetters</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#beansRequireSettersForGetters--">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Beans require setters for getters.

 <p>
 When enabled, ignore read-only properties (properties with getters but not setters).

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean without a Serializable interface.</jc>
   <jk>public class</jk> MyBean {

      <jc>// A read/write property.</jc>
      <jk>public</jk> String getFoo() { <jk>return</jk> <js>"foo"</js>; }
      <jk>public void</jk> setFoo(String foo) { ... }

      <jc>// A read-only property.</jc>
      <jk>public</jk> String getBar() { <jk>return</jk> <js>"bar"</js>; }
   }

   <jc>// Create a serializer that ignores bean properties without setters.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .beansRequireSettersForGetters()
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_beansRequireSettersForGetters</jsf>, <jk>true</jk>)
      .build();

   <jc>// Produces:  {"foo":"foo"}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='notes'>
   <li>The <a href="../../../../org/apache/juneau/annotation/Beanp.html" title="annotation in org.apache.juneau.annotation"><code>@Beanp</code></a> annotation can be used on the getter to override this setting.
   <li>The <a href="../../../../org/apache/juneau/annotation/BeanIgnore.html" title="annotation in org.apache.juneau.annotation"><code>@BeanIgnore</code></a> annotation can also be used on getters to ignore them as bean properties.
 </ul>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_beansRequireSettersForGetters"><code>BeanContext.BEAN_beansRequireSettersForGetters</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#beansRequireSettersForGetters--">beansRequireSettersForGetters</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="bpi-java.util.Map-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bpi</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.310">bpi</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;values)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#bpi-java.util.Map-">BeanContextBuilder</a></code></span></div>
<div class="block">Bean property includes.

 <p>
 Specifies the set and order of names of properties associated with bean classes.

 <p>
 For example, <c>bpi(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"foo,bar"</js>))</c> means only serialize the <c>foo</c> and
 <c>bar</c> properties on the specified bean.  Likewise, parsing will ignore any bean properties not specified
 and either throw an exception or silently ignore them depending on whether <a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreUnknownBeanProperties--"><code>BeanContextBuilder.ignoreUnknownBeanProperties()</code></a>
 has been called.

 <p>
 This value is entirely optional if you simply want to expose all the getters and public fields on
 a class as bean properties.  However, it's useful if you want certain getters to be ignored or you want the properties to be
 serialized in a particular order.  Note that on IBM JREs, the property order is the same as the order in the source code,
 whereas on Oracle JREs, the order is entirely random.

 <p>
 Setting applies to specified class and all subclasses.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with 3 properties.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String
         <jf>foo</jf> = <js>"foo"</js>,
         <jf>bar</jf> = <js>"bar"</js>,
         <jf>baz</jf> = <js>"baz"</js>;
   }

   <jc>// Create a serializer that includes only the 'foo' and 'bar' properties on the MyBean class.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .bpi(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"foo,bar"</js>))
      .build();

   <jc>// Produces:  {"foo":"foo","bar":"bar"}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <p>
 This method is functionally equivalent to the following code for each entry:
 <p class='bcode w800'>
   builder.annotations(<jk>new</jk> BeanAnnotation(key).bpi(value.toString()));
 </p>

 <ul class='seealso'>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/Bean.html#bpi--"><code>Bean.bpi()</code></a> - On an annotation on the bean class itself.
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/BeanConfig.html#bpi--"><code>BeanConfig.bpi()</code></a> - On a bean config annotation (see <a href="../../../../org/apache/juneau/BeanContextBuilder.html#annotations-java.lang.annotation.Annotation...-"><code>BeanContextBuilder.annotations(Annotation...)</code></a>).
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#bpi-java.util.Map-">bpi</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>values</code> - The values to add to this builder.
   <br>Keys are bean class names which can be a simple name, fully-qualified name, or <js>"*"</js> for all beans.
   <br>Values are comma-delimited lists of property names.  Non-String objects are first converted to Strings.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="bpi-java.lang.Class-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bpi</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.316">bpi</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;beanClass,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;properties)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#bpi-java.lang.Class-java.lang.String-">BeanContextBuilder</a></code></span></div>
<div class="block">Bean property includes.

 <p>
 Specifies the set and order of names of properties associated with the bean class.

 <p>
 For example, <c>bpi(MyBean.<jk>class</jk>, <js>"foo,bar"</js>)</c> means only serialize the <c>foo</c> and
 <c>bar</c> properties on the specified bean.  Likewise, parsing will ignore any bean properties not specified
 and either throw an exception or silently ignore them depending on whether <a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreUnknownBeanProperties--"><code>BeanContextBuilder.ignoreUnknownBeanProperties()</code></a>
 has been called.

 <p>
 This value is entirely optional if you simply want to expose all the getters and public fields on
 a class as bean properties.  However, it's useful if you want certain getters to be ignored or you want the properties to be
 serialized in a particular order.  Note that on IBM JREs, the property order is the same as the order in the source code,
 whereas on Oracle JREs, the order is entirely random.

 <p>
 Setting applies to specified class and all subclasses.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with 3 properties.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String
         <jf>foo</jf> = <js>"foo"</js>,
         <jf>bar</jf> = <js>"bar"</js>,
         <jf>baz</jf> = <js>"baz"</js>;
   }

   <jc>// Create a serializer that includes only the 'foo' and 'bar' properties on the MyBean class.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .bpi(MyBean.<jk>class</jk>, <js>"foo,bar"</js>)
      .build();

   <jc>// Produces:  {"foo":"foo","bar":"bar"}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <p>
 This method is functionally equivalent to the following code:
 <p class='bcode w800'>
   builder.annotations(<jk>new</jk> BeanAnnotation(beanClass.getName()).bpi(properties));
 </p>

 <ul class='seealso'>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/Bean.html#bpi--"><code>Bean.bpi()</code></a> - On an annotation on the bean class itself.
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/BeanConfig.html#bpi--"><code>BeanConfig.bpi()</code></a> - On a bean config annotation (see <a href="../../../../org/apache/juneau/BeanContextBuilder.html#annotations-java.lang.annotation.Annotation...-"><code>BeanContextBuilder.annotations(Annotation...)</code></a>).
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#bpi-java.lang.Class-java.lang.String-">bpi</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>beanClass</code> - The bean class.</dd>
<dd><code>properties</code> - Comma-delimited list of property names.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="bpi-java.lang.String-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bpi</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.322">bpi</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;beanClassName,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;properties)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#bpi-java.lang.String-java.lang.String-">BeanContextBuilder</a></code></span></div>
<div class="block">Bean property includes.

 <p>
 Specifies the set and order of names of properties associated with the bean class.

 <p>
 For example, <c>bpi(<js>"MyBean"</js>, <js>"foo,bar"</js>)</c> means only serialize the <c>foo</c> and
 <c>bar</c> properties on the specified bean.  Likewise, parsing will ignore any bean properties not specified
 and either throw an exception or silently ignore them depending on whether <a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreUnknownBeanProperties--"><code>BeanContextBuilder.ignoreUnknownBeanProperties()</code></a>
 has been called.

 <p>
 This value is entirely optional if you simply want to expose all the getters and public fields on
 a class as bean properties.  However, it's useful if you want certain getters to be ignored or you want the properties to be
 serialized in a particular order.  Note that on IBM JREs, the property order is the same as the order in the source code,
 whereas on Oracle JREs, the order is entirely random.

 <p>
 Setting applies to specified class and all subclasses.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with 3 properties.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String
         <jf>foo</jf> = <js>"foo"</js>,
         <jf>bar</jf> = <js>"bar"</js>,
         <jf>baz</jf> = <js>"baz"</js>;
   }

   <jc>// Create a serializer that includes only the 'foo' and 'bar' properties on the MyBean class.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .bpi(<js>"MyBean"</js>, <js>"foo,bar"</js>)
      .build();

   <jc>// Produces:  {"foo":"foo","bar":"bar"}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <p>
 This method is functionally equivalent to the following code:
 <p class='bcode w800'>
   builder.annotations(<jk>new</jk> BeanAnnotation(beanClassName).bpi(properties));
 </p>

 <ul class='seealso'>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/Bean.html#bpi--"><code>Bean.bpi()</code></a> - On an annotation on the bean class itself.
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/BeanConfig.html#bpi--"><code>BeanConfig.bpi()</code></a> - On a bean config annotation (see <a href="../../../../org/apache/juneau/BeanContextBuilder.html#annotations-java.lang.annotation.Annotation...-"><code>BeanContextBuilder.annotations(Annotation...)</code></a>).
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#bpi-java.lang.String-java.lang.String-">bpi</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>beanClassName</code> - The bean class name.
   <br>Can be a simple name, fully-qualified name, or <js>"*"</js> for all beans.</dd>
<dd><code>properties</code> - Comma-delimited list of property names.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="bpro-java.util.Map-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bpro</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.328">bpro</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;values)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#bpro-java.util.Map-">BeanContextBuilder</a></code></span></div>
<div class="block">Read-only bean properties.

 <p>
 Specifies one or more properties on beans that are read-only despite having valid getters.
 Serializers will serialize such properties as usual, but parsers will silently ignore them.
 Note that this is different from the <l>bpi</l>/<l>bpx</l> settings which include or exclude properties
 for both serializers and parsers.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with 3 properties.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf>, <jf>bar</jf>, <jf>baz</jf>;
   }

   <jc>// Create a serializer with read-only property settings.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .bpro(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"bar,baz"</js>))
      .build();

   <jc>// All 3 properties will be serialized.</jc>
   String json = s.serialize(<jk>new</jk> MyBean());

   <jc>// Create a parser with read-only property settings.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .bpro(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"bar,baz"</js>))
      .ignoreUnknownBeanProperties()
      .build();

   <jc>// Parser ignores bar and baz properties.</jc>
   MyBean b = p.parse(<js>"{foo:'foo',bar:'bar',baz:'baz'}"</js>, MyBean.<jk>class</jk>);
 </p>

 <p>
 This method is functionally equivalent to the following code for each entry:
 <p class='bcode w800'>
   builder.annotations(<jk>new</jk> BeanAnnotation(key).bpro(value.toString()));
 </p>

 <ul class='seealso'>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/BeanConfig.html#bpro--"><code>BeanConfig.bpro()</code></a>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/Bean.html#bpro--"><code>Bean.bpro()</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#bpro-java.util.Map-">bpro</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>values</code> - The values to add to this builder.
   <br>Keys are bean class names which can be a simple name, fully-qualified name, or <js>"*"</js> for all beans.
   <br>Values are comma-delimited lists of property names.  Non-String objects are first converted to Strings.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="bpro-java.lang.Class-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bpro</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.334">bpro</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;beanClass,
                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;properties)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#bpro-java.lang.Class-java.lang.String-">BeanContextBuilder</a></code></span></div>
<div class="block">Read-only bean properties.

 <p>
 Specifies one or more properties on a bean that are read-only despite having valid getters.
 Serializers will serialize such properties as usual, but parsers will silently ignore them.
 Note that this is different from the <l>bpi</l>/<l>bpx</l> settings which include or exclude properties
 for both serializers and parsers.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with 3 properties.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf>, <jf>bar</jf>, <jf>baz</jf>;
   }

   <jc>// Create a serializer with read-only property settings.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .bpro(MyBean.<jk>class</jk>, <js>"bar,baz"</js>)
      .build();

   <jc>// All 3 properties will be serialized.</jc>
   String json = s.serialize(<jk>new</jk> MyBean());

   <jc>// Create a parser with read-only property settings.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .bpro(MyBean.<jk>class</jk>, <js>"bar,baz"</js>)
      .ignoreUnknownBeanProperties()
      .build();

   <jc>// Parser ignores bar and baz properties.</jc>
   MyBean b = p.parse(<js>"{foo:'foo',bar:'bar',baz:'baz'}"</js>, MyBean.<jk>class</jk>);
 </p>

 <p>
 This method is functionally equivalent to the following code:
 <p class='bcode w800'>
   builder.annotations(<jk>new</jk> BeanAnnotation(beanClass.getName()).bpro(properties));
 </p>

 <ul class='seealso'>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/BeanConfig.html#bpro--"><code>BeanConfig.bpro()</code></a>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/Bean.html#bpro--"><code>Bean.bpro()</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#bpro-java.lang.Class-java.lang.String-">bpro</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>beanClass</code> - The bean class.</dd>
<dd><code>properties</code> - Comma-delimited list of property names.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="bpro-java.lang.String-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bpro</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.340">bpro</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;beanClassName,
                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;properties)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#bpro-java.lang.String-java.lang.String-">BeanContextBuilder</a></code></span></div>
<div class="block">Read-only bean properties.

 <p>
 Specifies one or more properties on a bean that are read-only despite having valid getters.
 Serializers will serialize such properties as usual, but parsers will silently ignore them.
 Note that this is different from the <l>bpi</l>/<l>bpx</l> settings which include or exclude properties
 for both serializers and parsers.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with 3 properties.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf>, <jf>bar</jf>, <jf>baz</jf>;
   }

   <jc>// Create a serializer with read-only property settings.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .bpro(<js>"MyBean"</js>, <js>"bar,baz"</js>)
      .build();

   <jc>// All 3 properties will be serialized.</jc>
   String json = s.serialize(<jk>new</jk> MyBean());

   <jc>// Create a parser with read-only property settings.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .bpro(<js>"MyBean"</js>, <js>"bar,baz"</js>)
      .ignoreUnknownBeanProperties()
      .build();

   <jc>// Parser ignores bar and baz properties.</jc>
   MyBean b = p.parse(<js>"{foo:'foo',bar:'bar',baz:'baz'}"</js>, MyBean.<jk>class</jk>);
 </p>

 <p>
 This method is functionally equivalent to the following code:
 <p class='bcode w800'>
   builder.annotations(<jk>new</jk> BeanAnnotation(beanClass.getName).bpro(properties));
 </p>

 <ul class='seealso'>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/BeanConfig.html#bpro--"><code>BeanConfig.bpro()</code></a>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/Bean.html#bpro--"><code>Bean.bpro()</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#bpro-java.lang.String-java.lang.String-">bpro</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>beanClassName</code> - The bean class name.
   <br>Can be a simple name, fully-qualified name, or <js>"*"</js> for all bean classes.</dd>
<dd><code>properties</code> - Comma-delimited list of property names.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="bpwo-java.util.Map-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bpwo</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.346">bpwo</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;values)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#bpwo-java.util.Map-">BeanContextBuilder</a></code></span></div>
<div class="block">Write-only bean properties.

 <p>
 Specifies one or more properties on a bean that are write-only despite having valid setters.
 Parsers will parse such properties as usual, but serializers will silently ignore them.
 Note that this is different from the <l>bpi</l>/<l>bpx</l> settings which include or exclude properties
 for both serializers and parsers.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with 3 properties.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf>, <jf>bar</jf>, <jf>baz</jf>;
   }

   <jc>// Create a serializer with write-only property settings.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .bpwo(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"bar,baz"</js>))
      .build();

   <jc>// Only foo will be serialized.</jc>
   String json = s.serialize(<jk>new</jk> MyBean());

   <jc>// Create a parser with write-only property settings.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .bpwo(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"bar,baz"</js>))
      .build();

   <jc>// Parser parses all 3 properties.</jc>
   MyBean b = p.parse(<js>"{foo:'foo',bar:'bar',baz:'baz'}"</js>, MyBean.<jk>class</jk>);
 </p>

 <p>
 This method is functionally equivalent to the following code for each entry:
 <p class='bcode w800'>
   builder.annotations(<jk>new</jk> BeanAnnotation(key).bpwo(value.toString()));
 </p>

 <ul class='seealso'>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/BeanConfig.html#bpwo--"><code>BeanConfig.bpwo()</code></a>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/Bean.html#bpwo--"><code>Bean.bpwo()</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#bpwo-java.util.Map-">bpwo</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>values</code> - The values to add to this builder.
   <br>Keys are bean class names which can be a simple name, fully-qualified name, or <js>"*"</js> for all beans.
   <br>Values are comma-delimited lists of property names.  Non-String objects are first converted to Strings.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="bpwo-java.lang.Class-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bpwo</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.352">bpwo</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;beanClass,
                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;properties)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#bpwo-java.lang.Class-java.lang.String-">BeanContextBuilder</a></code></span></div>
<div class="block">Write-only bean properties.

 <p>
 Specifies one or more properties on a bean that are write-only despite having valid setters.
 Parsers will parse such properties as usual, but serializers will silently ignore them.
 Note that this is different from the <l>bpi</l>/<l>bpx</l> settings which include or exclude properties
 for both serializers and parsers.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with 3 properties.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf>, <jf>bar</jf>, <jf>baz</jf>;
   }

   <jc>// Create a serializer with write-only property settings.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .bpwo(MyBean.<jk>class</jk>, <js>"bar,baz"</js>)
      .build();

   <jc>// Only foo will be serialized.</jc>
   String json = s.serialize(<jk>new</jk> MyBean());

   <jc>// Create a parser with write-only property settings.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .bpwo(MyBean.<jk>class</jk>, <js>"bar,baz"</js>)
      .build();

   <jc>// Parser parses all 3 properties.</jc>
   MyBean b = p.parse(<js>"{foo:'foo',bar:'bar',baz:'baz'}"</js>, MyBean.<jk>class</jk>);
 </p>

 <p>
 This method is functionally equivalent to the following code:
 <p class='bcode w800'>
   builder.annotations(<jk>new</jk> BeanAnnotation(beanClass.getName).bpwo(properties));
 </p>

 <ul class='seealso'>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/BeanConfig.html#bpwo--"><code>BeanConfig.bpwo()</code></a>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/Bean.html#bpwo--"><code>Bean.bpwo()</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#bpwo-java.lang.Class-java.lang.String-">bpwo</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>beanClass</code> - The bean class.</dd>
<dd><code>properties</code> - Comma-delimited list of property names.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="bpwo-java.lang.String-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bpwo</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.358">bpwo</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;beanClassName,
                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;properties)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#bpwo-java.lang.String-java.lang.String-">BeanContextBuilder</a></code></span></div>
<div class="block">Write-only bean properties.

 <p>
 Specifies one or more properties on a bean that are write-only despite having valid setters.
 Parsers will parse such properties as usual, but serializers will silently ignore them.
 Note that this is different from the <l>bpi</l>/<l>bpx</l> settings which include or exclude properties
 for both serializers and parsers.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with 3 properties.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf>, <jf>bar</jf>, <jf>baz</jf>;
   }

   <jc>// Create a serializer with write-only property settings.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .bpwo(<js>"MyBean"</js>, <js>"bar,baz"</js>)
      .build();

   <jc>// Only foo will be serialized.</jc>
   String json = s.serialize(<jk>new</jk> MyBean());

   <jc>// Create a parser with write-only property settings.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .bpwo(<js>"MyBean"</js>, <js>"bar,baz"</js>)
      .build();

   <jc>// Parser parses all 3 properties.</jc>
   MyBean b = p.parse(<js>"{foo:'foo',bar:'bar',baz:'baz'}"</js>, MyBean.<jk>class</jk>);
 </p>

 <p>
 This method is functionally equivalent to the following code:
 <p class='bcode w800'>
   builder.annotations(<jk>new</jk> BeanAnnotation(beanClassName).bpwo(properties));
 </p>

 <ul class='seealso'>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/BeanConfig.html#bpwo--"><code>BeanConfig.bpwo()</code></a>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/Bean.html#bpwo--"><code>Bean.bpwo()</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#bpwo-java.lang.String-java.lang.String-">bpwo</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>beanClassName</code> - The bean class name.
   <br>Can be a simple name, fully-qualified name, or <js>"*"</js> for all bean classes.</dd>
<dd><code>properties</code> - Comma-delimited list of property names.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="bpx-java.util.Map-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bpx</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.364">bpx</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;values)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#bpx-java.util.Map-">BeanContextBuilder</a></code></span></div>
<div class="block">Bean property excludes.

 <p>
 Specifies to exclude the specified list of properties for the specified bean classes.

 <p>
 Same as <a href="../../../../org/apache/juneau/BeanContextBuilder.html#bpi-java.util.Map-"><code>BeanContextBuilder.bpi(Map)</code></a> except you specify a list of bean property names that you want to exclude from
 serialization.

 <p>
 Setting applies to specified class and all subclasses.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with 3 properties.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String
         <jf>foo</jf> = <js>"foo"</js>,
         <jf>bar</jf> = <js>"bar"</js>,
         <jf>baz</jf> = <js>"baz"</js>;
   }

   <jc>// Create a serializer that excludes the "bar" and "baz" properties on the MyBean class.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .bpx(AMap.of(<js>"MyBean"</js>, <js>"bar,baz"</js>))
      .build();

   <jc>// Produces:  {"foo":"foo"}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <p>
 This method is functionally equivalent to the following code for each entry:
 <p class='bcode w800'>
   builder.annotations(<jk>new</jk> BeanAnnotation(key).bpx(value.toString()));
 </p>

 <ul class='seealso'>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/BeanConfig.html#bpx--"><code>BeanConfig.bpx()</code></a>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/Bean.html#bpx--"><code>Bean.bpx()</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#bpx-java.util.Map-">bpx</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>values</code> - The values to add to this builder.
   <br>Keys are bean class names which can be a simple name, fully-qualified name, or <js>"*"</js> for all beans.
   <br>Values are comma-delimited lists of property names.  Non-String objects are first converted to Strings.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="bpx-java.lang.Class-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bpx</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.370">bpx</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;beanClass,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;properties)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#bpx-java.lang.Class-java.lang.String-">BeanContextBuilder</a></code></span></div>
<div class="block">Bean property excludes.

 <p>
 Specifies to exclude the specified list of properties for the specified bean class.

 <p>
 Same as <a href="../../../../org/apache/juneau/BeanContextBuilder.html#bpi-java.lang.Class-java.lang.String-"><code>BeanContextBuilder.bpi(Class, String)</code></a> except you specify a list of bean property names that you want to exclude from
 serialization.

 <p>
 Setting applies to specified class and all subclasses.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with 3 properties.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String
         <jf>foo</jf> = <js>"foo"</js>,
         <jf>bar</jf> = <js>"bar"</js>,
         <jf>baz</jf> = <js>"baz"</js>;
   }

   <jc>// Create a serializer that excludes the "bar" and "baz" properties on the MyBean class.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .bpx(MyBean.<jk>class</jk>, <js>"bar,baz"</js>)
      .build();

   <jc>// Produces:  {"foo":"foo"}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <p>
 This method is functionally equivalent to the following code:
 <p class='bcode w800'>
   builder.annotations(<jk>new</jk> BeanAnnotation(beanClass.getName()).bpx(properties));
 </p>

 <ul class='seealso'>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/BeanConfig.html#bpx--"><code>BeanConfig.bpx()</code></a>
   <li class='jm'><a href="../../../../org/apache/juneau/annotation/Bean.html#bpx--"><code>Bean.bpx()</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#bpx-java.lang.Class-java.lang.String-">bpx</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>beanClass</code> - The bean class.</dd>
<dd><code>properties</code> - Comma-delimited list of property names.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="bpx-java.lang.String-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>bpx</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.376">bpx</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;beanClassName,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;properties)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#bpx-java.lang.String-java.lang.String-">BeanContextBuilder</a></code></span></div>
<div class="block">Bean property excludes.

 <p>
 Specifies to exclude the specified list of properties for the specified bean class.

 <p>
 Same as <a href="../../../../org/apache/juneau/BeanContextBuilder.html#bpx-java.lang.String-java.lang.String-"><code>BeanContextBuilder.bpx(String, String)</code></a> except you specify a list of bean property names that you want to exclude from
 serialization.

 <p>
 Setting applies to specified class and all subclasses.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with 3 properties.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String
         <jf>foo</jf> = <js>"foo"</js>,
         <jf>bar</jf> = <js>"bar"</js>,
         <jf>baz</jf> = <js>"baz"</js>;
   }

   <jc>// Create a serializer that excludes the "bar" and "baz" properties on the MyBean class.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .bpx(<js>"MyBean"</js>, <js>"bar,baz"</js>)
      .build();

   <jc>// Produces:  {"foo":"foo"}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <p>
 This method is functionally equivalent to the following code:
 <p class='bcode w800'>
   builder.annotations(<jk>new</jk> BeanAnnotation(beanClassName).bpx(properties));
 </p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#bpx-java.lang.String-java.lang.String-">bpx</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>beanClassName</code> - The bean class name.
   <br>Can be a simple name, fully-qualified name, or <js>"*"</js> for all bean classes.</dd>
<dd><code>properties</code> - Comma-delimited list of property names.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="dictionary-java.lang.Object...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dictionary</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.382">dictionary</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#dictionary-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Bean dictionary.

 <p>
 The list of classes that make up the bean dictionary in this bean context.

 <p>
 A dictionary is a name/class mapping used to find class types during parsing when they cannot be inferred
 through reflection.  The names are defined through the <a href="../../../../org/apache/juneau/annotation/Bean.html#typeName--"><code>@Bean(typeName)</code></a> annotation defined
 on the bean class.  For example, if a class <c>Foo</c> has a type-name of <js>"myfoo"</js>, then it would end up
 serialized as <js>"{_type:'myfoo',...}"</js> in JSON (depending on <l>addBeanTypes</l>/<l>addRootType</l> properties)
 or <js>"&lt;myfoo&gt;...&lt;/myfoo&gt;"</js> in XML.

 <p>
 This setting tells the parsers which classes to look for when resolving <js>"_type"</js> attributes.

 <p>
 Values can consist of any of the following types:
 <ul>
   <li>Any bean class that specifies a value for <a href="../../../../org/apache/juneau/annotation/Bean.html#typeName--"><code>@Bean(typeName)</code></a>.
   <li>Any subclass of <a href="../../../../org/apache/juneau/BeanDictionaryList.html" title="class in org.apache.juneau"><code>BeanDictionaryList</code></a> containing a collection of bean classes with type name annotations.
   <li>Any subclass of <a href="../../../../org/apache/juneau/BeanDictionaryMap.html" title="class in org.apache.juneau"><code>BeanDictionaryMap</code></a> containing a mapping of type names to classes without type name annotations.
   <li>Any array or collection of the objects above.
 </ul>

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// POJOs with @Bean(name) annotations.</jc>
   <ja>@Bean</ja>(typeName=<js>"foo"</js>)
   <jk>public class</jk> Foo {...}
   <ja>@Bean</ja>(typeName=<js>"bar"</js>)
   <jk>public class</jk> Bar {...}

   <jc>// Create a parser and tell it which classes to try to resolve.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .dictionary(Foo.<jk>class</jk>, Bar.<jk>class</jk>)
      .addBeanTypes()
      .build();

   <jc>// Same, but use property.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .addTo(<jsf>BEAN_beanDictionary</jsf>, Foo.<jk>class</jk>)
      .addTo(<jsf>BEAN_beanDictionary</jsf>, Bar.<jk>class</jk>)
      .set(<jsf>SERIALIZER_addBeanTypes</jsf>, <jk>true</jk>)
      .build();

   <jc>// A bean with a field with an indeterminate type.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> Object <jf>mySimpleField</jf>;
   }

   <jc>// Parse bean.</jc>
   MyBean b = p.parse(<js>"{mySimpleField:{_type:'foo',...}}"</js>, MyBean.<jk>class</jk>);
 </p>

 <p>
 Another option is to use the <a href="../../../../org/apache/juneau/annotation/Bean.html#dictionary--"><code>Bean.dictionary()</code></a> annotation on the POJO class itself:

 <p class='bcode w800'>
   <jc>// Instead of by parser, define a bean dictionary on a class through an annotation.</jc>
   <jc>// This applies to all properties on this class and all subclasses.</jc>
   <ja>@Bean</ja>(dictionary={Foo.<jk>class</jk>,Bar.<jk>class</jk>})
   <jk>public class</jk> MyBean {
      <jk>public</jk> Object <jf>mySimpleField</jf>;  <jc>// May contain Foo or Bar object.</jc>
      <jk>public</jk> Map&lt;String,Object&gt; <jf>myMapField</jf>;  <jc>// May contain Foo or Bar objects.</jc>
   }
 </p>

 <p>
   A typical usage is to allow for HTML documents to be parsed back into HTML beans:
 <p class='bcode w800'>
   <jc>// Use the predefined HTML5 bean dictionary which is a BeanDictionaryList.</jc>
   ReaderParser p = HtmlParser
      .<jsm>create</jsm>()
      .dictionary(HtmlBeanDictionary.<jk>class</jk>)
      .build();

   <jc>// Parse an HTML body into HTML beans.</jc>
   Body body = p.parse(<js>"&lt;body&gt;&lt;ul&gt;&lt;li&gt;foo&lt;/li&gt;&lt;li&gt;bar&lt;/li&gt;&lt;/ul&gt;"</js>, Body.<jk>class</jk>);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_beanDictionary"><code>BeanContext.BEAN_beanDictionary</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#dictionary-java.lang.Object...-">dictionary</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>values</code> - The values to add to this property.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="dictionaryOn-java.lang.Class-java.lang.Class...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dictionaryOn</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.388">dictionaryOn</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;on,
                                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;values)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#dictionaryOn-java.lang.Class-java.lang.Class...-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Bean dictionary.

 <p>
 This is identical to <a href="../../../../org/apache/juneau/BeanContextBuilder.html#dictionary-java.lang.Object...-"><code>BeanContextBuilder.dictionary(Object...)</code></a>, but specifies a dictionary within the context of
 a single class as opposed to globally.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// POJOs with @Bean(name) annotations.</jc>
   <ja>@Bean</ja>(typeName=<js>"foo"</js>)
   <jk>public class</jk> Foo {...}
   <ja>@Bean</ja>(typeName=<js>"bar"</js>)
   <jk>public class</jk> Bar {...}

   <jc>// A bean with a field with an indeterminate type.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> Object <jf>mySimpleField</jf>;
   }

   <jc>// Create a parser and tell it which classes to try to resolve.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .dictionaryOn(MyBean.class, Foo.<jk>class</jk>, Bar.<jk>class</jk>)
      .build();

   <jc>// Parse bean.</jc>
   MyBean b = p.parse(<js>"{mySimpleField:{_type:'foo',...}}"</js>, MyBean.<jk>class</jk>);
 </p>

 <p>
 This is functionally equivalent to the <a href="../../../../org/apache/juneau/annotation/Bean.html#dictionary--"><code>Bean.dictionary()</code></a> annotation.

 <ul class='seealso'>
   <li class='ja'><a href="../../../../org/apache/juneau/annotation/Bean.html#dictionary--"><code>Bean.dictionary()</code></a>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_beanDictionary"><code>BeanContext.BEAN_beanDictionary</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#dictionaryOn-java.lang.Class-java.lang.Class...-">dictionaryOn</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>on</code> - The class that the dictionary values apply to.</dd>
<dd><code>values</code> - The new values for this property.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="dontIgnorePropertiesWithoutSetters--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dontIgnorePropertiesWithoutSetters</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.394">dontIgnorePropertiesWithoutSetters</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#dontIgnorePropertiesWithoutSetters--">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Ignore properties without setters.

 <p>
 When enabled, trying to set a value on a bean property without a setter will silently be ignored.
 Otherwise, a <code>BeanRuntimeException</code> is thrown.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with a property with a getter but not a setter.</jc>
   <jk>public class</jk> MyBean {
      <jk>public void</jk> getFoo() {
         <jk>return</jk> <js>"foo"</js>;
      }
   }

   <jc>// Create a parser that throws an exception if a setter is not found but a getter is.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .dontIgnorePropertiesWithoutSetters()
      .build();

   <jc>// Same, but use property.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_ignorePropertiesWithoutSetters</jsf>, <jk>false</jk>)
      .build();

   <jc>// Throws a ParseException.</jc>
   MyBean b = p.parse(<js>"{foo:'bar'}"</js>, MyBean.<jk>class</jk>);
 </p>

 <ul class='notes'>
   <li>The <a href="../../../../org/apache/juneau/annotation/BeanIgnore.html" title="annotation in org.apache.juneau.annotation"><code>@BeanIgnore</code></a> annotation can also be used on getters and fields to ignore them.
 </ul>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_ignorePropertiesWithoutSetters"><code>BeanContext.BEAN_ignorePropertiesWithoutSetters</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#dontIgnorePropertiesWithoutSetters--">dontIgnorePropertiesWithoutSetters</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="dontIgnoreTransientFields--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dontIgnoreTransientFields</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.400">dontIgnoreTransientFields</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#dontIgnoreTransientFields--">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Ignore transient fields.

 <p>
 When enabled, methods and fields marked as <jk>transient</jk> will be ignored as bean properties.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with a transient field.</jc>
   <jk>public class</jk> MyBean {
      <jk>public transient</jk> String <jf>foo</jf> = <js>"foo"</js>;
   }

   <jc>// Create a parser that doesn't ignore transient fields.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .dontIgnoreTransientFields()
      .build();

   <jc>// Same, but use property.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_ignoreTransientFields</jsf>, <jk>false</jk>)
      .build();

   <jc>// Produces:  {"foo":"foo"}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='notes'>
   <li>The <a href="../../../../org/apache/juneau/annotation/Beanp.html" title="annotation in org.apache.juneau.annotation"><code>@Beanp</code></a> annotation can also be used on transient fields to keep them from being ignored.
 </ul>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_ignoreTransientFields"><code>BeanContext.BEAN_ignoreTransientFields</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#dontIgnoreTransientFields--">dontIgnoreTransientFields</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="dontIgnoreUnknownNullBeanProperties--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dontIgnoreUnknownNullBeanProperties</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.406">dontIgnoreUnknownNullBeanProperties</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#dontIgnoreUnknownNullBeanProperties--">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Ignore unknown properties with null values.

 <p>
 When enabled, trying to set a <jk>null</jk> value on a non-existent bean property will silently be ignored.
 Otherwise, a <code>BeanRuntimeException</code> is thrown.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with a single property.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf>;
   }

   <jc>// Create a parser that throws an exception on an unknown property even if the value being set is null.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .dontIgnoreUnknownNullBeanProperties()
      .build();

   <jc>// Same, but use property.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_ignoreUnknownNullBeanProperties</jsf>, <jk>false</jk>)
      .build();

   <jc>// Throws a BeanRuntimeException wrapped in a ParseException on the unknown 'bar' property.</jc>
   MyBean b = p.parse(<js>"{foo:'foo',bar:null}"</js>, MyBean.<jk>class</jk>);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_ignoreUnknownNullBeanProperties"><code>BeanContext.BEAN_ignoreUnknownNullBeanProperties</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#dontIgnoreUnknownNullBeanProperties--">dontIgnoreUnknownNullBeanProperties</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="dontUseInterfaceProxies--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dontUseInterfaceProxies</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.412">dontUseInterfaceProxies</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#dontUseInterfaceProxies--">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Use interface proxies.

 <p>
 When enabled, interfaces will be instantiated as proxy classes through the use of an
 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/InvocationHandler.html?is-external=true" title="class or interface in java.lang.reflect"><code>InvocationHandler</code></a> if there is no other way of instantiating them.
 Otherwise, throws a <a href="../../../../org/apache/juneau/BeanRuntimeException.html" title="class in org.apache.juneau"><code>BeanRuntimeException</code></a>.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// An interface with a single getter.</jc>
   <jk>public interface</jk> MyBean {
      String getFoo();
      <jk>void</jk> setFoo(String foo);
   }

   <jc>// Create a parser that uses interface proxies.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .build();

   <jc>// Same, but use property.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_useInterfaceProxies</jsf>, <jk>true</jk>)
      .build();

   <jc>// Creates a proxy implementation of a MyBean interface.</jc>
   MyBean b = p.parse(<js>"{foo:'bar'}"</js>, MyBean.<jk>class</jk>);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_useInterfaceProxies"><code>BeanContext.BEAN_useInterfaceProxies</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#dontUseInterfaceProxies--">dontUseInterfaceProxies</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="example-java.lang.Class-java.lang.Object-">
<!--   -->
</a><a name="example-java.lang.Class-T-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>example</h4>
<pre>public&nbsp;&lt;T&gt;&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.418">example</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;pojoClass,
                                         T&nbsp;o)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#example-java.lang.Class-T-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  POJO example.

 <p>
 Specifies an example of the specified class.

 <p>
 Examples are used in cases such as POJO examples in Swagger documents.

 <p>
 Setting applies to specified class and all subclasses.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that excludes the 'foo' and 'bar' properties on the MyBean class.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .example(MyBean.<jk>class</jk>, <jk>new</jk> MyBean().foo(<js>"foo"</js>).bar(123))
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .addTo(<jsf>BEAN_examples</jsf>, MyBean.<jk>class</jk>.getName(), <jk>new</jk> MyBean().foo(<js>"foo"</js>).bar(123))
      .build();
 </p>

 <p>
 POJO examples can also be defined on classes via the following:
 <ul class='spaced-list'>
   <li>A static field annotated with <a href="../../../../org/apache/juneau/annotation/Example.html" title="annotation in org.apache.juneau.annotation"><code>@Example</code></a>.
   <li>A static method annotated with <a href="../../../../org/apache/juneau/annotation/Example.html" title="annotation in org.apache.juneau.annotation"><code>@Example</code></a> with zero arguments or one <a href="../../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau"><code>BeanSession</code></a> argument.
   <li>A static method with name <c>example</c> with no arguments or one <a href="../../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau"><code>BeanSession</code></a> argument.
 </ul>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_examples"><code>BeanContext.BEAN_examples</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#example-java.lang.Class-T-">example</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>pojoClass</code> - The POJO class.</dd>
<dd><code>o</code> - An instance of the POJO class used for examples.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="exampleJson-java.lang.Class-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>exampleJson</h4>
<pre>public&nbsp;&lt;T&gt;&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.424">exampleJson</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;pojoClass,
                                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;json)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#exampleJson-java.lang.Class-java.lang.String-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  POJO example.

 <p>
 Specifies an example in JSON of the specified class.

 <p>
 Examples are used in cases such as POJO examples in Swagger documents.

 <p>
 Setting applies to specified class and all subclasses.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that excludes the 'foo' and 'bar' properties on the MyBean class.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .example(MyBean.<jk>class</jk>, <js>"{foo:'bar'}"</js>)
      .build();
 </p>

 <p>
 POJO examples can also be defined on classes via the following:
 <ul class='spaced-list'>
   <li>A static field annotated with <a href="../../../../org/apache/juneau/annotation/Example.html" title="annotation in org.apache.juneau.annotation"><code>@Example</code></a>.
   <li>A static method annotated with <a href="../../../../org/apache/juneau/annotation/Example.html" title="annotation in org.apache.juneau.annotation"><code>@Example</code></a> with zero arguments or one <a href="../../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau"><code>BeanSession</code></a> argument.
   <li>A static method with name <c>example</c> with no arguments or one <a href="../../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau"><code>BeanSession</code></a> argument.
 </ul>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_examples"><code>BeanContext.BEAN_examples</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#exampleJson-java.lang.Class-java.lang.String-">exampleJson</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - The POJO class type.</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>pojoClass</code> - The POJO class.</dd>
<dd><code>json</code> - The simple JSON representation of the example.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="fluentSetters--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>fluentSetters</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.430">fluentSetters</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#fluentSetters--">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Find fluent setters.

 <p>
 When enabled, fluent setters are detected on beans during parsing.

 <p>
 Fluent setters must have the following attributes:
 <ul>
   <li>Public.
   <li>Not static.
   <li>Take in one parameter.
   <li>Return the bean itself.
 </ul>

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with a fluent setter.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> MyBean foo(String value) {...}
   }

   <jc>// Create a parser that finds fluent setters.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .fluentSetters()
      .build();

   <jc>// Same, but use property.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_fluentSetters</jsf>, <jk>true</jk>)
      .build();

   <jc>// Parse into bean using fluent setter.</jc>
   MyBean b = p.parse(<js>"{foo:'bar'}"</js>);
 </p>

 <ul class='notes'>
   <li>The <a href="../../../../org/apache/juneau/annotation/Beanp.html" title="annotation in org.apache.juneau.annotation"><code>@Beanp</code></a> annotation can also be used on methods to individually identify them as fluent setters.
   <li>The <a href="../../../../org/apache/juneau/annotation/Bean.html#fluentSetters--"><code>@Bean.fluentSetters()</code></a> annotation can also be used on classes to specify to look for fluent setters.
 </ul>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_fluentSetters"><code>BeanContext.BEAN_fluentSetters</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#fluentSetters--">fluentSetters</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="fluentSetters-java.lang.Class-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>fluentSetters</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.436">fluentSetters</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;on)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#fluentSetters-java.lang.Class-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Find fluent setters.

 <p>
 Identical to <a href="../../../../org/apache/juneau/BeanContextBuilder.html#fluentSetters--"><code>BeanContextBuilder.fluentSetters()</code></a> but enables it on a specific class only.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with a fluent setter.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> MyBean foo(String value) {...}
   }

   <jc>// Create a parser that finds fluent setters.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .fluentSetters(MyBean.<jk>class</jk>)
      .build();

   <jc>// Parse into bean using fluent setter.</jc>
   MyBean b = p.parse(<js>"{foo:'bar'}"</js>);
 </p>

 <ul class='notes'>
   <li>This method is functionally equivalent to using the <a href="../../../../org/apache/juneau/annotation/Bean.html#fluentSetters--"><code>Bean.fluentSetters()</code></a> annotation.
 </ul>

 <ul class='seealso'>
   <li class='ja'><a href="../../../../org/apache/juneau/annotation/Bean.html#fluentSetters--"><code>Bean.fluentSetters()</code></a>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_fluentSetters"><code>BeanContext.BEAN_fluentSetters</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#fluentSetters-java.lang.Class-">fluentSetters</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>on</code> - The class that this applies to.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="ignoreInvocationExceptionsOnGetters--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ignoreInvocationExceptionsOnGetters</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.442">ignoreInvocationExceptionsOnGetters</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreInvocationExceptionsOnGetters--">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Ignore invocation errors on getters.

 <p>
 When enabled, errors thrown when calling bean getter methods will silently be ignored.
 Otherwise, a <code>BeanRuntimeException</code> is thrown.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with a property that throws an exception.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String getFoo() {
         <jk>throw new</jk> RuntimeException(<js>"foo"</js>);
      }
   }

   <jc>// Create a serializer that ignores bean getter exceptions.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .ingoreInvocationExceptionsOnGetters()
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_ignoreInvocationExceptionsOnGetters</jsf>, <jk>true</jk>)
      .build();

   <jc>// Exception is ignored.</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_ignoreInvocationExceptionsOnGetters"><code>BeanContext.BEAN_ignoreInvocationExceptionsOnGetters</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#ignoreInvocationExceptionsOnGetters--">ignoreInvocationExceptionsOnGetters</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="ignoreInvocationExceptionsOnSetters--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ignoreInvocationExceptionsOnSetters</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.448">ignoreInvocationExceptionsOnSetters</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreInvocationExceptionsOnSetters--">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Ignore invocation errors on setters.

 <p>
 When enabled, errors thrown when calling bean setter methods will silently be ignored.
 Otherwise, a <code>BeanRuntimeException</code> is thrown.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with a property that throws an exception.</jc>
   <jk>public class</jk> MyBean {
      <jk>public void</jk> setFoo(String foo) {
         <jk>throw new</jk> RuntimeException(<js>"foo"</js>);
      }
   }

   <jc>// Create a parser that ignores bean setter exceptions.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .ignoreInvocationExceptionsOnSetters()
      .build();

   <jc>// Same, but use property.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_ignoreInvocationExceptionsOnSetters</jsf>, <jk>true</jk>)
      .build();

   <jc>// Exception is ignored.</jc>
   MyBean b = p.parse(<js>"{foo:'bar'}"</js>, MyBean.<jk>class</jk>);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_ignoreInvocationExceptionsOnSetters"><code>BeanContext.BEAN_ignoreInvocationExceptionsOnSetters</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#ignoreInvocationExceptionsOnSetters--">ignoreInvocationExceptionsOnSetters</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="ignoreUnknownBeanProperties--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ignoreUnknownBeanProperties</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.454">ignoreUnknownBeanProperties</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#ignoreUnknownBeanProperties--">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Ignore unknown properties.

 <p>
 When enabled, trying to set a value on a non-existent bean property will silently be ignored.
 Otherwise, a <code>BeanRuntimeException</code> is thrown.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with a single property.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf>;
   }

   <jc>// Create a parser that ignores missing bean properties.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .ignoreUnknownBeanProperties()
      .build();

   <jc>// Same, but use property.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_ignoreUnknownBeanProperties</jsf>, <jk>true</jk>)
      .build();

   <jc>// Doesn't throw an exception on unknown 'bar' property.</jc>
   MyBean b = p.parse(<js>"{foo:'foo',bar:'bar'}"</js>, MyBean.<jk>class</jk>);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_ignoreUnknownBeanProperties"><code>BeanContext.BEAN_ignoreUnknownBeanProperties</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#ignoreUnknownBeanProperties--">ignoreUnknownBeanProperties</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="implClass-java.lang.Class-java.lang.Class-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>implClass</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.460">implClass</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;interfaceClass,
                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;implClass)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#implClass-java.lang.Class-java.lang.Class-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Implementation classes.

 <p>
 For interfaces and abstract classes this method can be used to specify an implementation class for the
 interface/abstract class so that instances of the implementation class are used when instantiated (e.g. during a
 parse).

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean interface.</jc>
   <jk>public interface</jk> MyBean {
      ...
   }

   <jc>// A bean implementation.</jc>
   <jk>public class</jk> MyBeanImpl <jk>implements</jk> MyBean {
      ...
   }

   <jc>// Create a parser that instantiates MyBeanImpls when parsing MyBeans.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .implClass(MyBean.<jk>class</jk>, MyBeanImpl.<jk>class</jk>)
      .build();

   <jc>// Same, but use property.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .addTo(<jsf>BEAN_implClasses</jsf>, MyBean.<jk>class</jk>.getName(), MyBeanImpl.<jk>class</jk>)
      .build();

   <jc>// Instantiates a MyBeanImpl,</jc>
   MyBean b = p.parse(<js>"..."</js>, MyBean.<jk>class</jk>);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_implClasses"><code>BeanContext.BEAN_implClasses</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#implClass-java.lang.Class-java.lang.Class-">implClass</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>interfaceClass</code> - The interface class.</dd>
<dd><code>implClass</code> - The implementation class.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="implClasses-java.util.Map-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>implClasses</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.466">implClasses</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&gt;&nbsp;values)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#implClasses-java.util.Map-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Implementation classes.

 <p>
 For interfaces and abstract classes this method can be used to specify an implementation class for the
 interface/abstract class so that instances of the implementation class are used when instantiated (e.g. during a
 parse).

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with a single property.</jc>
   <jk>public interface</jk> MyBean {
      ...
   }

   <jc>// A bean with a single property.</jc>
   <jk>public class</jk> MyBeanImpl <jk>implements</jk> MyBean {
      ...
   }

   <jc>// Create a parser that instantiates MyBeanImpls when parsing MyBeans.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .implClasses(AMap.<jsm>of</jsm>(MyBean.<jk>class</jk>, MyBeanImpl.<jk>class</jk>))
      .build();

   <jc>// Same, but use property.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .addTo(<jsf>BEAN_implClasses</jsf>, AMap.<jsm>of</jsm>(MyBean.<jk>class</jk>.getName(), MyBeanImpl.<jk>class</jk>))
      .build();

   <jc>// Instantiates a MyBeanImpl,</jc>
   MyBean b = p.parse(<js>"..."</js>, MyBean.<jk>class</jk>);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_implClasses"><code>BeanContext.BEAN_implClasses</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#implClasses-java.util.Map-">implClasses</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>values</code> - The new value for this property.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="interfaceClass-java.lang.Class-java.lang.Class-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>interfaceClass</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.472">interfaceClass</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;on,
                                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#interfaceClass-java.lang.Class-java.lang.Class-">BeanContextBuilder</a></code></span></div>
<div class="block">Identifies a class to be used as the interface class for the specified class and all subclasses.

 <p>
 When specified, only the list of properties defined on the interface class will be used during serialization.
 Additional properties on subclasses will be ignored.

 <p class='bcode w800'>
   <jc>// Parent class or interface</jc>
   <jk>public abstract class</jk> A {
      <jk>public</jk> String <jf>foo</jf> = <js>"foo"</js>;
   }

   <jc>// Sub class</jc>
   <jk>public class</jk> A1 <jk>extends</jk> A {
      <jk>public</jk> String <jf>bar</jf> = <js>"bar"</js>;
   }

   <jc>// Create a serializer and define our interface class mapping.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .interfaceClass(A1.<jk>class</jk>, A.<jk>class</jk>)
      .build();

   <jc>// Produces "{"foo":"foo"}"</jc>
   String json = s.serialize(<jk>new</jk> A1());
 </p>

 <p>
 This annotation can be used on the parent class so that it filters to all child classes, or can be set
 individually on the child classes.

 <ul class='notes'>
   <li>The <a href="../../../../org/apache/juneau/annotation/Bean.html#interfaceClass--"><code>@Bean(interfaceClass)</code></a> annotation is the equivalent annotation-based solution.
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#interfaceClass-java.lang.Class-java.lang.Class-">interfaceClass</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>on</code> - The class that the interface class applies to.</dd>
<dd><code>value</code> - The new value for this property.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="interfaces-java.lang.Class...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>interfaces</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.478">interfaces</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#interfaces-java.lang.Class...-">BeanContextBuilder</a></code></span></div>
<div class="block">Identifies a set of interfaces.

 <p>
 When specified, only the list of properties defined on the interface class will be used during serialization
 of implementation classes.  Additional properties on subclasses will be ignored.

 <p class='bcode w800'>
   <jc>// Parent class or interface</jc>
   <jk>public abstract class</jk> A {
      <jk>public</jk> String <jf>foo</jf> = <js>"foo"</js>;
   }

   <jc>// Sub class</jc>
   <jk>public class</jk> A1 <jk>extends</jk> A {
      <jk>public</jk> String <jf>bar</jf> = <js>"bar"</js>;
   }

   <jc>// Create a serializer and define our interface class mapping.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .interfaces(A.<jk>class</jk>)
      .build();

   <jc>// Produces "{"foo":"foo"}"</jc>
   String json = s.serialize(<jk>new</jk> A1());
 </p>

 <p>
 This annotation can be used on the parent class so that it filters to all child classes, or can be set
 individually on the child classes.

 <ul class='notes'>
   <li>The <a href="../../../../org/apache/juneau/annotation/Bean.html#interfaceClass--"><code>@Bean(interfaceClass)</code></a> annotation is the equivalent annotation-based solution.
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#interfaces-java.lang.Class...-">interfaces</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="notBeanClasses-java.lang.Object...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notBeanClasses</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.484">notBeanClasses</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#notBeanClasses-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Bean class exclusions.

 <p>
 List of classes that should not be treated as beans even if they appear to be bean-like.
 Not-bean classes are converted to <c>Strings</c> during serialization.

 <p>
 Values can consist of any of the following types:
 <ul>
   <li>Classes.
   <li>Arrays and collections of classes.
 </ul>

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with a single property.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf> = <js>"bar"</js>;

      <jk>public</jk> String toString() {
         <jk>return</jk> <js>"baz"</js>;
      }
   }

   <jc>// Create a serializer that doesn't treat MyBean as a bean class.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .notBeanClasses(MyBean.<jk>class</jk>)
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .addTo(<jsf>BEAN_notBeanClasses</jsf>, MyBean.<jk>class</jk>)
      .build();

   <jc>// Produces "baz" instead of {"foo":"bar"}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='notes'>
   <li>The <a href="../../../../org/apache/juneau/annotation/BeanIgnore.html" title="annotation in org.apache.juneau.annotation"><code>@BeanIgnore</code></a> annotation can also be used on classes to prevent them from being recognized as beans.
 </ul>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_notBeanClasses"><code>BeanContext.BEAN_notBeanClasses</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#notBeanClasses-java.lang.Object...-">notBeanClasses</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>values</code> - The values to add to this property.
   <br>Values can consist of any of the following types:
   <ul>
      <li>Classes.
      <li>Arrays and collections of classes.
   </ul></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="notBeanPackages-java.lang.Object...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notBeanPackages</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.490">notBeanPackages</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#notBeanPackages-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Bean package exclusions.

 <p>
 Used as a convenient way of defining the <a href="../../../../org/apache/juneau/BeanContextBuilder.html#notBeanClasses-java.lang.Object...-"><code>BeanContextBuilder.notBeanClasses(Object...)</code></a> property for entire packages.
 Any classes within these packages will be serialized to strings using <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang"><code>Object.toString()</code></a>.

 <p>
 Note that you can specify suffix patterns to include all subpackages.

 <p>
 Values can consist of any of the following types:
 <ul>
   <li>Strings.
   <li>Arrays and collections of strings.
 </ul>

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that ignores beans in the specified packages.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .notBeanPackages(<js>"org.apache.foo"</js>, <js>"org.apache.bar.*"</js>)
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .addTo(<jsf>BEAN_notBeanPackages</jsf>, <js>"org.apache.foo"</js>)
      .addTo(<jsf>BEAN_notBeanPackages</jsf>, <js>"org.apache.bar.*"</js>)
      .build();
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_notBeanPackages"><code>BeanContext.BEAN_notBeanPackages</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#notBeanPackages-java.lang.Object...-">notBeanPackages</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>values</code> - The values to add to this property.
   <br>Values can consist of any of the following types:
   <ul>
      <li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Package.html?is-external=true" title="class or interface in java.lang"><code>Package</code></a> objects.
      <li>Strings.
      <li>Arrays and collections of anything in this list.
   </ul></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="propertyNamer-java.lang.Class-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>propertyNamer</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.496">propertyNamer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/PropertyNamer.html" title="interface in org.apache.juneau">PropertyNamer</a>&gt;&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#propertyNamer-java.lang.Class-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Bean property namer

 <p>
 The class to use for calculating bean property names.

 <p>
 Predefined classes:
 <ul>
   <li><a href="../../../../org/apache/juneau/PropertyNamerDefault.html" title="class in org.apache.juneau"><code>PropertyNamerDefault</code></a> - Default.
   <li><a href="../../../../org/apache/juneau/PropertyNamerDLC.html" title="class in org.apache.juneau"><code>PropertyNamerDLC</code></a> - Dashed-lower-case names.
   <li><a href="../../../../org/apache/juneau/PropertyNamerULC.html" title="class in org.apache.juneau"><code>PropertyNamerULC</code></a> - Dashed-upper-case names.
 </ul>

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with a single property.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>fooBarBaz</jf> = <js>"fooBarBaz"</js>;
   }

   <jc>// Create a serializer that uses Dashed-Lower-Case property names.</jc>
   <jc>// (e.g. "foo-bar-baz" instead of "fooBarBaz")</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .propertyNamer(PropertyNamerDLC.<jk>class</jk>)
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_propertyNamer</jsf>, PropertyNamerDLC.<jk>class</jk>)
      .build();

   <jc>// Produces:  {"foo-bar-baz":"fooBarBaz"}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_propertyNamer"><code>BeanContext.BEAN_propertyNamer</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#propertyNamer-java.lang.Class-">propertyNamer</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this setting.
   <br>The default is <a href="../../../../org/apache/juneau/PropertyNamerDefault.html" title="class in org.apache.juneau"><code>PropertyNamerDefault</code></a>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="propertyNamer-java.lang.Class-java.lang.Class-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>propertyNamer</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.502">propertyNamer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;on,
                                           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/PropertyNamer.html" title="interface in org.apache.juneau">PropertyNamer</a>&gt;&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#propertyNamer-java.lang.Class-java.lang.Class-">BeanContextBuilder</a></code></span></div>
<div class="block">Bean property namer

 <p>
 Same as <a href="../../../../org/apache/juneau/BeanContextBuilder.html#propertyNamer-java.lang.Class-"><code>BeanContextBuilder.propertyNamer(Class)</code></a> but allows you to specify a namer for a specific class.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with a single property.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>fooBarBaz</jf> = <js>"fooBarBaz"</js>;
   }

   <jc>// Create a serializer that uses Dashed-Lower-Case property names for the MyBean class only.</jc>
   <jc>// (e.g. "foo-bar-baz" instead of "fooBarBaz")</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .propertyNamer(MyBean.<jk>class</jk>, PropertyNamerDLC.<jk>class</jk>)
      .build();

   <jc>// Produces:  {"foo-bar-baz":"fooBarBaz"}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='seealso'>
   <li class='ja'><a href="../../../../org/apache/juneau/annotation/Bean.html#propertyNamer--"><code>Bean(propertyNamer)</code></a>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_propertyNamer"><code>BeanContext.BEAN_propertyNamer</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#propertyNamer-java.lang.Class-java.lang.Class-">propertyNamer</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>on</code> - The class that the namer applies to.</dd>
<dd><code>value</code> - The new value for this setting.
   <br>The default is <a href="../../../../org/apache/juneau/PropertyNamerDefault.html" title="class in org.apache.juneau"><code>PropertyNamerDefault</code></a>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="sortProperties--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sortProperties</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.508">sortProperties</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#sortProperties--">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Sort bean properties.

 <p>
 When enabled, all bean properties will be serialized and access in alphabetical order.
 Otherwise, the natural order of the bean properties is used which is dependent on the JVM vendor.
 On IBM JVMs, the bean properties are ordered based on their ordering in the Java file.
 On Oracle JVMs, the bean properties are not ordered (which follows the official JVM specs).

 <p>
 This property is disabled by default so that IBM JVM users don't have to use <a href="../../../../org/apache/juneau/annotation/Bean.html" title="annotation in org.apache.juneau.annotation"><code>@Bean</code></a> annotations
 to force bean properties to be in a particular order and can just alter the order of the fields/methods
 in the Java file.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with 3 properties.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>c</jf> = <js>"1"</js>;
      <jk>public</jk> String <jf>b</jf> = <js>"2"</js>;
      <jk>public</jk> String <jf>a</jf> = <js>"3"</js>;
   }

   <jc>// Create a serializer that sorts bean properties.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .sortProperties()
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_sortProperties</jsf>, <jk>true</jk>)
      .build();

   <jc>// Produces:  {"a":"3","b":"2","c":"1"}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='notes'>
   <li>The <a href="../../../../org/apache/juneau/annotation/Bean.html#sort--"><code>@Bean.sort()</code></a> annotation can also be used to sort properties on just a single class.
 </ul>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_sortProperties"><code>BeanContext.BEAN_sortProperties</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#sortProperties--">sortProperties</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="sortProperties-java.lang.Class...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sortProperties</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.514">sortProperties</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;on)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#sortProperties-java.lang.Class...-">BeanContextBuilder</a></code></span></div>
<div class="block">Sort bean properties.

 <p>
 Same as <a href="../../../../org/apache/juneau/BeanContextBuilder.html#sortProperties--"><code>BeanContextBuilder.sortProperties()</code></a> but allows you to specify individual bean classes instead of globally.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// A bean with 3 properties.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>c</jf> = <js>"1"</js>;
      <jk>public</jk> String <jf>b</jf> = <js>"2"</js>;
      <jk>public</jk> String <jf>a</jf> = <js>"3"</js>;
   }

   <jc>// Create a serializer that sorts properties on MyBean.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .sortProperties(MyBean.<jk>class</jk>)
      .build();

   <jc>// Produces:  {"a":"3","b":"2","c":"1"}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='seealso'>
   <li class='ja'><a href="../../../../org/apache/juneau/annotation/Bean.html#sort--"><code>Bean(sort)</code></a>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_sortProperties"><code>BeanContext.BEAN_sortProperties</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#sortProperties-java.lang.Class...-">sortProperties</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>on</code> - The bean classes to sort properties on.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="stopClass-java.lang.Class-java.lang.Class-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>stopClass</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.520">stopClass</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;on,
                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#stopClass-java.lang.Class-java.lang.Class-">BeanContextBuilder</a></code></span></div>
<div class="block">Identifies a stop class for the annotated class.

 <p>
 Identical in purpose to the stop class specified by <a href="https://docs.oracle.com/javase/8/docs/api/java/beans/Introspector.html?is-external=true#getBeanInfo-java.lang.Class-java.lang.Class-" title="class or interface in java.beans"><code>Introspector.getBeanInfo(Class, Class)</code></a>.
 Any properties in the stop class or in its base classes will be ignored during analysis.

 <p>
 For example, in the following class hierarchy, instances of <c>C3</c> will include property <c>p3</c>,
 but not <c>p1</c> or <c>p2</c>.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jk>public class</jk> C1 {
      <jk>public int</jk> getP1();
   }

   <jk>public class</jk> C2 <jk>extends</jk> C1 {
      <jk>public int</jk> getP2();
   }

   <jk>public class</jk> C3 <jk>extends</jk> C2 {
      <jk>public int</jk> getP3();
   }

   <jc>// Create a serializer specifies a stop class for C3.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .stopClass(C3.<jk>class</jk>, C2.<jk>class</jk>)
      .build();

   <jc>// Produces:  {"p3":"..."}</jc>
   String json = s.serialize(<jk>new</jk> C3());
 </p></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#stopClass-java.lang.Class-java.lang.Class-">stopClass</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>on</code> - The class on which the stop class is being applied.</dd>
<dd><code>value</code> - The new value for this property.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="swaps-java.lang.Object...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>swaps</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.526">swaps</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;values)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#swaps-java.lang.Object...-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Java object swaps.

 <p>
 Swaps are used to "swap out" non-serializable classes with serializable equivalents during serialization,
 and "swap in" the non-serializable class during parsing.

 <p>
 An example of a swap would be a <c>Calendar</c> object that gets swapped out for an ISO8601 string.

 <p>
 Multiple swaps can be associated with a single class.
 When multiple swaps are applicable to the same class, the media type pattern defined by
 <a href="../../../../org/apache/juneau/transform/PojoSwap.html#forMediaTypes--"><code>PojoSwap.forMediaTypes()</code></a> or <a href="../../../../org/apache/juneau/annotation/Swap.html#mediaTypes--"><code>@Swap(mediaTypes)</code></a> are used to come up with the best match.

 <p>
 Values can consist of any of the following types:
 <ul>
   <li>Any subclass of <a href="../../../../org/apache/juneau/transform/PojoSwap.html" title="class in org.apache.juneau.transform"><code>PojoSwap</code></a>.
   <li>Any instance of <a href="../../../../org/apache/juneau/transform/PojoSwap.html" title="class in org.apache.juneau.transform"><code>PojoSwap</code></a>.
   <li>Any surrogate class.  A shortcut for defining a <a href="../../../../org/apache/juneau/transform/SurrogateSwap.html" title="class in org.apache.juneau.transform"><code>SurrogateSwap</code></a>.
   <li>Any array or collection of the objects above.
 </ul>

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Sample swap for converting Dates to ISO8601 strings.</jc>
   <jk>public class</jk> MyDateSwap <jk>extends</jk> StringSwap&lt;Date&gt; {
      <jc>// ISO8601 formatter.</jc>
      <jk>private</jk> DateFormat <jf>format</jf> = <jk>new</jk> SimpleDateFormat(<js>"yyyy-MM-dd'T'HH:mm:ssZ"</js>);

      <ja>@Override</ja>
      <jk>public</jk> String swap(BeanSession session, Date o) {
         <jk>return</jk> <jf>format</jf>.format(o);
      }

      <ja>@Override</ja>
      <jk>public</jk> Date unswap(BeanSession session, String o, ClassMeta hint) <jk>throws</jk> Exception {
         <jk>return</jk> <jf>format</jf>.parse(o);
      }
   }

   <jc>// Sample bean with a Date field.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> Date <jf>date</jf> = <jk>new</jk> Date(112, 2, 3, 4, 5, 6);
   }

   <jc>// Create a serializer that uses our date swap.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .swaps(MyDateSwap.<jk>class</jk>)
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .addTo(<jsf>BEAN_swaps</jsf>, MyDateSwap.<jk>class</jk>)
      .build();

   <jc>// Produces:  {"date":"2012-03-03T04:05:06-0500"}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());

   <jc>// Create a serializer that uses our date swap.</jc>
   ReaderParser p = JsonParser
      .<jsm>create</jsm>()
      .swaps(MyDateSwap.<jk>class</jk>)
      .build();

   <jc>// Use our parser to parse a bean.</jc>
   MyBean bean = p.parse(json, MyBean.<jk>class</jk>);
 </p>

 <ul class='notes'>
   <li>The <a href="../../../../org/apache/juneau/annotation/Swap.html" title="annotation in org.apache.juneau.annotation"><code>@Swap</code></a> annotation can also be used on classes to identify swaps for the class.
   <li>The <a href="../../../../org/apache/juneau/annotation/Swap.html" title="annotation in org.apache.juneau.annotation"><code>@Swap</code></a> annotation can also be used on bean methods and fields to identify swaps for values of those bean properties.
 </ul>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_swaps"><code>BeanContext.BEAN_swaps</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#swaps-java.lang.Object...-">swaps</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>values</code> - The values to add to this property.
   <br>Values can consist of any of the following types:
   <ul>
      <li>Any subclass of <a href="../../../../org/apache/juneau/transform/PojoSwap.html" title="class in org.apache.juneau.transform"><code>PojoSwap</code></a>.
      <li>Any surrogate class.  A shortcut for defining a <a href="../../../../org/apache/juneau/transform/SurrogateSwap.html" title="class in org.apache.juneau.transform"><code>SurrogateSwap</code></a>.
      <li>Any array or collection of the objects above.
   </ul></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="typeName-java.lang.Class-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>typeName</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.532">typeName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;on,
                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#typeName-java.lang.Class-java.lang.String-">BeanContextBuilder</a></code></span></div>
<div class="block">An identifying name for this class.

 <p>
 The name is used to identify the class type during parsing when it cannot be inferred through reflection.
 For example, if a bean property is of type <c>Object</c>, then the serializer will add the name to the
 output so that the class can be determined during parsing.

 <p>
 It is also used to specify element names in XML.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Use _type='mybean' to identify this bean.</jc>
   <jk>public class</jk> MyBean {...}

   <jc>// Create a serializer and specify the type name..</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .typeName(MyBean.<jk>class</jk>, <js>"mybean"</js>)
      .build();

      <jc>// Produces:  {"_type":"mybean",...}</jc>
      String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='notes'>
   <li>Equivalent to the <a href="../../../../org/apache/juneau/annotation/Bean.html#typeName--"><code>Bean(typeName)</code></a> annotation.
 </ul>

 <ul class='seealso'>
   <li class='jc'><a href="../../../../org/apache/juneau/annotation/Bean.html#typeName--"><code>Bean(typeName)</code></a>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_beanDictionary"><code>BeanContext.BEAN_beanDictionary</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#typeName-java.lang.Class-java.lang.String-">typeName</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>on</code> - The class the type name is being defined on.</dd>
<dd><code>value</code> - The new value for this property.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="typePropertyName-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>typePropertyName</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.538">typePropertyName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#typePropertyName-java.lang.String-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Bean type property name.

 <p>
 This specifies the name of the bean property used to store the dictionary name of a bean type so that the
 parser knows the data type to reconstruct.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// POJOs with @Bean(name) annotations.</jc>
   <ja>@Bean</ja>(typeName=<js>"foo"</js>)
   <jk>public class</jk> Foo {...}
   <ja>@Bean</ja>(typeName=<js>"bar"</js>)
   <jk>public class</jk> Bar {...}

   <jc>// Create a serializer that uses 't' instead of '_type' for dictionary names.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .typePropertyName(<js>"t"</js>)
      .dictionary(Foo.<jk>class</jk>, Bar.<jk>class</jk>)
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_typePropertyName</jsf>, <js>"t"</js>)
      .addTo(<jsf>BEAN_beanDictionary</jsf>, Foo.<jk>class</jk>)
      .addTo(<jsf>BEAN_beanDictionary</jsf>, Bar.<jk>class</jk>)
      .build();

   <jc>// A bean with a field with an indeterminate type.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> Object <jf>mySimpleField</jf>;
   }

   <jc>// Parse bean.</jc>
   MyBean b = p.parse(<js>"{mySimpleField:{t:'foo',...}}"</js>, MyBean.<jk>class</jk>);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_typePropertyName"><code>BeanContext.BEAN_typePropertyName</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#typePropertyName-java.lang.String-">typePropertyName</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.
   <br>The default is <js>"_type"</js>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="typePropertyName-java.lang.Class-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>typePropertyName</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.544">typePropertyName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;on,
                                              <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#typePropertyName-java.lang.Class-java.lang.String-">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Bean type property name.

 <p>
 Same as <a href="../../../../org/apache/juneau/BeanContextBuilder.html#typePropertyName-java.lang.String-"><code>BeanContextBuilder.typePropertyName(String)</code></a> except targets a specific bean class instead of globally.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// POJOs with @Bean(name) annotations.</jc>
   <ja>@Bean</ja>(typeName=<js>"foo"</js>)
   <jk>public class</jk> Foo {...}
   <ja>@Bean</ja>(typeName=<js>"bar"</js>)
   <jk>public class</jk> Bar {...}

   <jc>// A bean with a field with an indeterminate type.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> Object <jf>mySimpleField</jf>;
   }

   <jc>// Create a serializer that uses 't' instead of '_type' for dictionary names.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .typePropertyName(MyBean.<jk>class</jk>, <js>"t"</js>)
      .dictionary(Foo.<jk>class</jk>, Bar.<jk>class</jk>)
      .build();

   <jc>// Parse bean.</jc>
   MyBean b = p.parse(<js>"{mySimpleField:{t:'foo',...}}"</js>, MyBean.<jk>class</jk>);
 </p>

 <ul class='seealso'>
   <li class='ja'><a href="../../../../org/apache/juneau/annotation/Bean.html#typePropertyName--"><code>Bean(typePropertyName)</code></a>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_typePropertyName"><code>BeanContext.BEAN_typePropertyName</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#typePropertyName-java.lang.Class-java.lang.String-">typePropertyName</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>on</code> - The class the type property name applies to.</dd>
<dd><code>value</code> - The new value for this property.
   <br>The default is <js>"_type"</js>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="useEnumNames--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>useEnumNames</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.550">useEnumNames</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#useEnumNames--">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Use enum names.

 <p>
 When enabled, enums are always serialized by name, not using <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang"><code>Object.toString()</code></a>.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer with debug enabled.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .useEnumNames()
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_useEnumNames</jsf>, <jk>true</jk>)
      .build();

   <jc>// Enum with overridden toString().</jc>
   <jc>// Will be serialized as ONE/TWO/THREE even though there's a toString() method.</jc>
   <jk>public enum</jk> Option {
      <jsf>ONE</jsf>(1),
      <jsf>TWO</jsf>(2),
      <jsf>THREE</jsf>(3);

      <jk>private int</jk> <jf>i</jf>;

      Option(<jk>int</jk> i) {
         <jk>this</jk>.<jf>i</jf> = i;
      }

      <ja>@Override</ja>
      <jk>public</jk> String toString() {
         <jk>return</jk> String.<jsm>valueOf</jsm>(<jf>i</jf>);
      }
   }
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_useEnumNames"><code>BeanContext.BEAN_useEnumNames</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#useEnumNames--">useEnumNames</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="useJavaBeanIntrospector--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>useJavaBeanIntrospector</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.556">useJavaBeanIntrospector</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanContextBuilder.html#useJavaBeanIntrospector--">BeanContextBuilder</a></code></span></div>
<div class="block"><i><l>BeanContext</l> configuration property:&emsp;</i>  Use Java Introspector.

 <p>
 Using the built-in Java bean introspector will not pick up fields or non-standard getters/setters.
 <br>Most <a href="../../../../org/apache/juneau/annotation/Bean.html" title="annotation in org.apache.juneau.annotation"><code>@Bean</code></a> annotations will be ignored.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that only uses the built-in java bean introspector for finding properties.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .useJavaBeanIntrospector()
      .build();

   <jc>// Same, but use property.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .set(<jsf>BEAN_useJavaBeanIntrospector</jsf>, <jk>true</jk>)
      .build();
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanContext.html#BEAN_useJavaBeanIntrospector"><code>BeanContext.BEAN_useJavaBeanIntrospector</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#useJavaBeanIntrospector--">useJavaBeanIntrospector</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="detectRecursions--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>detectRecursions</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.562">detectRecursions</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanTraverseBuilder.html#detectRecursions--">BeanTraverseBuilder</a></code></span></div>
<div class="block"><i><l>BeanTraverse</l> configuration property:&emsp;</i>  Automatically detect POJO recursions.

 <p>
 When enabled, specifies that recursions should be checked for during traversal.

 <p>
 Recursions can occur when traversing models that aren't true trees but rather contain loops.
 <br>In general, unchecked recursions cause stack-overflow-errors.
 <br>These show up as <a href="../../../../org/apache/juneau/BeanRecursionException.html" title="class in org.apache.juneau"><code>BeanRecursionException</code></a> with the message <js>"Depth too deep.  Stack overflow occurred."</js>.

 <ul class='notes'>
   <li>
      Checking for recursion can cause a small performance penalty.
 </ul>

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that automatically checks for recursions.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .detectRecursions()
      .build();

   <jc>// Create a POJO model with a recursive loop.</jc>
   <jk>public class</jk> A {
      <jk>public</jk> Object <jf>f</jf>;
   }
   A a = <jk>new</jk> A();
   a.<jf>f</jf> = a;

   <jc>// Throws a SerializeException and not a StackOverflowError</jc>
   String json = s.serialize(a);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanTraverseContext.html#BEANTRAVERSE_detectRecursions"><code>BeanTraverseContext.BEANTRAVERSE_detectRecursions</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#detectRecursions--">detectRecursions</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="ignoreRecursions--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ignoreRecursions</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.568">ignoreRecursions</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanTraverseBuilder.html#ignoreRecursions--">BeanTraverseBuilder</a></code></span></div>
<div class="block"><i><l>BeanTraverse</l> configuration property:&emsp;</i>  Ignore recursion errors.

 <p>
 When enabled, when we encounter the same object when traversing a tree, we set the value to <jk>null</jk>.

 <p>
 For example, if a model contains the links A-&gt;B-&gt;C-&gt;A, then the JSON generated will look like
   the following when <jsf>BEANTRAVERSE_ignoreRecursions</jsf> is <jk>true</jk>...

 <p class='bcode w800'>
   {A:{B:{C:<jk>null</jk>}}}
 </p>

 <ul class='notes'>
   <li>
      Checking for recursion can cause a small performance penalty.
 </ul>

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer ignores recursions.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .ignoreRecursions()
      .build();

   <jc>// Create a POJO model with a recursive loop.</jc>
   <jk>public class</jk> A {
      <jk>public</jk> Object <jf>f</jf>;
   }
   A a = <jk>new</jk> A();
   a.<jf>f</jf> = a;

   <jc>// Produces "{f:null}"</jc>
   String json = s.serialize(a);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanTraverseContext.html#BEANTRAVERSE_ignoreRecursions"><code>BeanTraverseContext.BEANTRAVERSE_ignoreRecursions</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#ignoreRecursions--">ignoreRecursions</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="initialDepth-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initialDepth</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.574">initialDepth</a>(int&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanTraverseBuilder.html#initialDepth-int-">BeanTraverseBuilder</a></code></span></div>
<div class="block"><i><l>BeanTraverse</l> configuration property:&emsp;</i>  Initial depth.

 <p>
 The initial indentation level at the root.

 <p>
 Useful when constructing document fragments that need to be indented at a certain level when whitespace is enabled.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer with whitespace enabled and an initial depth of 2.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .ws()
      .initialDepth(2)
      .build();

   <jc>// Produces "\t\t{\n\t\t\t'foo':'bar'\n\t\t}\n"</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanTraverseContext.html#BEANTRAVERSE_initialDepth"><code>BeanTraverseContext.BEANTRAVERSE_initialDepth</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#initialDepth-int-">initialDepth</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.
   <br>The default is <c>0</c>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="maxDepth-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>maxDepth</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.580">maxDepth</a>(int&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/BeanTraverseBuilder.html#maxDepth-int-">BeanTraverseBuilder</a></code></span></div>
<div class="block"><i><l>BeanTraverse</l> configuration property:&emsp;</i>  Max traversal depth.

 <p>
 When enabled, abort traversal if specified depth is reached in the POJO tree.

 <p>
 If this depth is exceeded, an exception is thrown.

 <p>
 This prevents stack overflows from occurring when trying to traverse models with recursive references.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that throws an exception if the depth reaches greater than 20.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .maxDepth(20)
      .build();
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/BeanTraverseContext.html#BEANTRAVERSE_maxDepth"><code>BeanTraverseContext.BEANTRAVERSE_maxDepth</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#maxDepth-int-">maxDepth</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.
   <br>The default is <c>100</c>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="addBeanTypes--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addBeanTypes</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.586">addBeanTypes</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#addBeanTypes--">SerializerBuilder</a></code></span></div>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Add <js>"_type"</js> properties when needed.

 <p>
 When enabled, <js>"_type"</js> properties will be added to beans if their type cannot be inferred
 through reflection.

 <p>
 This is used to recreate the correct objects during parsing if the object types cannot be inferred.
 <br>For example, when serializing a <c>Map&lt;String,Object&gt;</c> field where the bean class cannot be determined from
 the type of the values.

 <p>
 Note the differences between the following settings:
 <ul class='javatree'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#addRootType--"><code>SerializerBuilder.addRootType()</code></a> - Affects whether <js>'_type'</js> is added to root node.
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#addBeanTypes--"><code>SerializerBuilder.addBeanTypes()</code></a> - Affects whether <js>'_type'</js> is added to any nodes.
 </ul>

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that adds _type to nodes.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .addBeanTypes()
      .build();

   <jc>// Our map of beans to serialize.</jc>
   <ja>@Bean</ja>(typeName=<js>"mybean"</js>)
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf> = <js>"bar"</js>;
   }
   OMap map = OMap.of(<js>"foo"</js>, <jk>new</jk> MyBean());

   <jc>// Will contain:  {"foo":{"_type":"mybean","foo":"bar"}}</jc>
   String json = s.serialize(map);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_addBeanTypes"><code>Serializer.SERIALIZER_addBeanTypes</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#addBeanTypes--">addBeanTypes</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="addRootType--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addRootType</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.592">addRootType</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#addRootType--">SerializerBuilder</a></code></span></div>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Add type attribute to root nodes.

 <p>
 When enabled, <js>"_type"</js> properties will be added to top-level beans.

 <p>
 When disabled, it is assumed that the parser knows the exact Java POJO type being parsed, and therefore top-level
 type information that might normally be included to determine the data type will not be serialized.

 <p>
 For example, when serializing a top-level POJO with a <a href="../../../../org/apache/juneau/annotation/Bean.html#typeName--"><code>@Bean(typeName)</code></a> value, a
 <js>'_type'</js> attribute will only be added when this setting is enabled.

 <p>
 Note the differences between the following settings:
 <ul class='javatree'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#addRootType--"><code>SerializerBuilder.addRootType()</code></a> - Affects whether <js>'_type'</js> is added to root node.
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#addBeanTypes--"><code>SerializerBuilder.addBeanTypes()</code></a> - Affects whether <js>'_type'</js> is added to any nodes.
 </ul>

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that adds _type to root node.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .addRootType()
      .build();

   <jc>// Our bean to serialize.</jc>
   <ja>@Bean</ja>(typeName=<js>"mybean"</js>)
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf> = <js>"bar"</js>;
   }

   <jc>// Will contain:  {"_type":"mybean","foo":"bar"}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_addRootType"><code>Serializer.SERIALIZER_addRootType</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#addRootType--">addRootType</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="keepNullProperties--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>keepNullProperties</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.598">keepNullProperties</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#keepNullProperties--">SerializerBuilder</a></code></span></div>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Don't trim null bean property values.

 <p>
 When enabled, null bean values will be serialized to the output.

 <ul class='notes'>
   <li>Not enabling this setting will cause <c>Map</c>s with <jk>null</jk> values to be lost during parsing.
 </ul>

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that serializes null properties.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .keepNullProperties()
      .build();

   <jc>// Our bean to serialize.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf> = <jk>null</jk>;
   }

   <jc>// Will contain "{foo:null}".</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_keepNullProperties"><code>Serializer.SERIALIZER_keepNullProperties</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#keepNullProperties--">keepNullProperties</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="listener-java.lang.Class-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>listener</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.604">listener</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/juneau/serializer/SerializerListener.html" title="class in org.apache.juneau.serializer">SerializerListener</a>&gt;&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#listener-java.lang.Class-">SerializerBuilder</a></code></span></div>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Serializer listener.

 <p>
 Class used to listen for errors and warnings that occur during serialization.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Define our serializer listener.</jc>
   <jc>// Simply captures all errors.</jc>
   <jk>public class</jk> MySerializerListener <jk>extends</jk> SerializerListener {

      <jc>// A simple property to store our events.</jc>
      <jk>public</jk> List&lt;String&gt; <jf>events</jf> = <jk>new</jk> LinkedList&lt;&gt;();

      <ja>@Override</ja>
      <jk>public</jk> &lt;T&gt; <jk>void</jk> onError(SerializerSession session, Throwable t, String msg) {
         <jf>events</jf>.add(session.getLastLocation() + <js>","</js> + msg + <js>","</js> + t);
      }
   }

   <jc>// Create a serializer using our listener.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .listener(MySerializerListener.<jk>class</jk>)
      .build();

   <jc>// Create a session object.</jc>
   <jc>// Needed because listeners are created per-session.</jc>
   <jk>try</jk> (WriterSerializerSession ss = s.createSession()) {

      <jc>// Serialize a bean.</jc>
      String json = ss.serialize(<jk>new</jk> MyBean());

      <jc>// Get the listener.</jc>
      MySerializerListener l = ss.getListener(MySerializerListener.<jk>class</jk>);

      <jc>// Dump the results to the console.</jc>
      SimpleJsonSerializer.<jsf>DEFAULT</jsf>.println(l.<jf>events</jf>);
   }
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_listener"><code>Serializer.SERIALIZER_listener</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#listener-java.lang.Class-">listener</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="sortCollections--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sortCollections</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.610">sortCollections</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#sortCollections--">SerializerBuilder</a></code></span></div>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Sort arrays and collections alphabetically.

 <p>
 When enabled, copies and sorts the contents of arrays and collections before serializing them.

 <p>
 Note that this introduces a performance penalty since it requires copying the existing collection.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that sorts arrays and collections before serialization.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .sortCollections()
      .build();

   <jc>// An unsorted array</jc>
   String[] array = {<js>"foo"</js>,<js>"bar"</js>,<js>"baz"</js>}

   <jc>// Produces ["bar","baz","foo"]</jc>
   String json = s.serialize(array);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_sortCollections"><code>Serializer.SERIALIZER_sortCollections</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#sortCollections--">sortCollections</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="sortMaps--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sortMaps</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.616">sortMaps</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#sortMaps--">SerializerBuilder</a></code></span></div>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Sort maps alphabetically.

 <p>
 When enabled, copies and sorts the contents of maps by their keys before serializing them.

 <p>
 Note that this introduces a performance penalty.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that sorts maps before serialization.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .sortMaps()
      .build();

   <jc>// An unsorted map.</jc>
   OMap map = OMap.<jsm>of</jsm>(<js>"foo"</js>,1,<js>"bar"</js>,2,<js>"baz"</js>,3);

   <jc>// Produces {"bar":2,"baz":3,"foo":1}</jc>
   String json = s.serialize(map);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_sortMaps"><code>Serializer.SERIALIZER_sortMaps</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#sortMaps--">sortMaps</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="trimEmptyCollections--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>trimEmptyCollections</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.622">trimEmptyCollections</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#trimEmptyCollections--">SerializerBuilder</a></code></span></div>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Trim empty lists and arrays.

 <p>
 When enabled, empty lists and arrays will not be serialized.

 <p>
 Note that enabling this setting has the following effects on parsing:
 <ul class='spaced-list'>
   <li>
      Map entries with empty list values will be lost.
   <li>
      Bean properties with empty list values will not be set.
 </ul>

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that skips empty arrays and collections.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .trimEmptyCollections()
      .build();

   <jc>// A bean with a field with an empty array.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String[] <jf>foo</jf> = {};
   }

   <jc>// Produces {}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_trimEmptyCollections"><code>Serializer.SERIALIZER_trimEmptyCollections</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#trimEmptyCollections--">trimEmptyCollections</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="trimEmptyMaps--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>trimEmptyMaps</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.628">trimEmptyMaps</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#trimEmptyMaps--">SerializerBuilder</a></code></span></div>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Trim empty maps.

 <p>
 When enabled, empty map values will not be serialized to the output.

 <p>
 Note that enabling this setting has the following effects on parsing:
 <ul class='spaced-list'>
   <li>
      Bean properties with empty map values will not be set.
 </ul>

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that skips empty maps.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .trimEmptyMaps()
      .build();

   <jc>// A bean with a field with an empty map.</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> OMap <jf>foo</jf> = OMap.<jsm>of</jsm>();
   }

   <jc>// Produces {}</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_trimEmptyMaps"><code>Serializer.SERIALIZER_trimEmptyMaps</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#trimEmptyMaps--">trimEmptyMaps</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="trimStrings--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>trimStrings</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.634">trimStrings</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#trimStrings--">SerializerBuilder</a></code></span></div>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  Trim strings.

 <p>
 When enabled, string values will be trimmed of whitespace using <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true#trim--" title="class or interface in java.lang"><code>String.trim()</code></a> before being serialized.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that trims strings before serialization.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .trimStrings()
      .build();

   <jc>// A map with space-padded keys/values</jc>
   OMap map = OMap.<jsm>of</jsm>(<js>" foo "</js>, <js>" bar "</js>);

   <jc>// Produces "{foo:'bar'}"</jc>
   String json = s.toString(map);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_trimStrings"><code>Serializer.SERIALIZER_trimStrings</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#trimStrings--">trimStrings</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="uriContext-org.apache.juneau.UriContext-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>uriContext</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.640">uriContext</a>(<a href="../../../../org/apache/juneau/UriContext.html" title="class in org.apache.juneau">UriContext</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#uriContext-org.apache.juneau.UriContext-">SerializerBuilder</a></code></span></div>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  URI context bean.

 <p>
 Bean used for resolution of URIs to absolute or root-relative form.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Our URI contextual information.</jc>
   String authority = <js>"http://localhost:10000"</js>;
   String contextRoot = <js>"/myContext"</js>;
   String servletPath = <js>"/myServlet"</js>;
   String pathInfo = <js>"/foo"</js>;

   <jc>// Create a UriContext object.</jc>
   UriContext uriContext = <jk>new</jk> UriContext(authority, contextRoot, servletPath, pathInfo);

   <jc>// Associate it with our serializer.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .uriContext(uriContext)
      .uriRelativity(<jsf>RESOURCE</jsf>)  <jc>// Assume relative paths are relative to servlet.</jc>
      .uriResolution(<jsf>ABSOLUTE</jsf>)  <jc>// Serialize URLs as absolute paths.</jc>
      .build();

   <jc>// A relative URL</jc>
   URL url = <jk>new</jk> URL(<js>"bar"</js>);

   <jc>// Produces "http://localhost:10000/myContext/myServlet/foo/bar"</jc>
   String json = s.toString(url);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_uriContext"><code>Serializer.SERIALIZER_uriContext</code></a>
   <li class='link'><a class='doclink' href='../../../../overview-summary.html#juneau-marshall.MarshallingUris'>Overview &gt; juneau-marshall &gt; URIs</a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#uriContext-org.apache.juneau.UriContext-">uriContext</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="uriRelativity-org.apache.juneau.UriRelativity-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>uriRelativity</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.646">uriRelativity</a>(<a href="../../../../org/apache/juneau/UriRelativity.html" title="enum in org.apache.juneau">UriRelativity</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#uriRelativity-org.apache.juneau.UriRelativity-">SerializerBuilder</a></code></span></div>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  URI relativity.

 <p>
 Defines what relative URIs are relative to when serializing any of the following:
 <ul>
   <li><a href="https://docs.oracle.com/javase/8/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net"><code>URI</code></a>
   <li><a href="https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true" title="class or interface in java.net"><code>URL</code></a>
   <li>Properties and classes annotated with <a href="../../../../org/apache/juneau/annotation/URI.html" title="annotation in org.apache.juneau.annotation"><code>@URI</code></a>
 </ul>

 <p>
 Possible values are:
 <ul class='javatree'>
   <li class='jf'><a href="../../../../org/apache/juneau/UriRelativity.html#RESOURCE"><code>UriRelativity.RESOURCE</code></a>
      - Relative URIs should be considered relative to the servlet URI.
   <li class='jf'><a href="../../../../org/apache/juneau/UriRelativity.html#PATH_INFO"><code>UriRelativity.PATH_INFO</code></a>
      - Relative URIs should be considered relative to the request URI.
 </ul>

 <p>
 See <a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#uriContext-org.apache.juneau.UriContext-"><code>SerializerBuilder.uriContext(UriContext)</code></a> for examples.

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_uriRelativity"><code>Serializer.SERIALIZER_uriRelativity</code></a>
   <li class='link'><a class='doclink' href='../../../../overview-summary.html#juneau-marshall.MarshallingUris'>Overview &gt; juneau-marshall &gt; URIs</a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#uriRelativity-org.apache.juneau.UriRelativity-">uriRelativity</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.
   <br>The default is <a href="../../../../org/apache/juneau/UriRelativity.html#RESOURCE"><code>UriRelativity.RESOURCE</code></a></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="uriResolution-org.apache.juneau.UriResolution-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>uriResolution</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.652">uriResolution</a>(<a href="../../../../org/apache/juneau/UriResolution.html" title="enum in org.apache.juneau">UriResolution</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#uriResolution-org.apache.juneau.UriResolution-">SerializerBuilder</a></code></span></div>
<div class="block"><i><l>Serializer</l> configuration property:&emsp;</i>  URI resolution.

 <p>
 Defines the resolution level for URIs when serializing any of the following:
 <ul>
   <li><a href="https://docs.oracle.com/javase/8/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net"><code>URI</code></a>
   <li><a href="https://docs.oracle.com/javase/8/docs/api/java/net/URL.html?is-external=true" title="class or interface in java.net"><code>URL</code></a>
   <li>Properties and classes annotated with <a href="../../../../org/apache/juneau/annotation/URI.html" title="annotation in org.apache.juneau.annotation"><code>@URI</code></a>
 </ul>

 <p>
 Possible values are:
 <ul>
   <li class='jf'><a href="../../../../org/apache/juneau/UriResolution.html#ABSOLUTE"><code>UriResolution.ABSOLUTE</code></a>
      - Resolve to an absolute URL (e.g. <js>"http://host:port/context-root/servlet-path/path-info"</js>).
   <li class='jf'><a href="../../../../org/apache/juneau/UriResolution.html#ROOT_RELATIVE"><code>UriResolution.ROOT_RELATIVE</code></a>
      - Resolve to a root-relative URL (e.g. <js>"/context-root/servlet-path/path-info"</js>).
   <li class='jf'><a href="../../../../org/apache/juneau/UriResolution.html#NONE"><code>UriResolution.NONE</code></a>
      - Don't do any URL resolution.
 </ul>

 <p>
 See <a href="../../../../org/apache/juneau/serializer/SerializerBuilder.html#uriContext-org.apache.juneau.UriContext-"><code>SerializerBuilder.uriContext(UriContext)</code></a> for examples.

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_uriResolution"><code>Serializer.SERIALIZER_uriResolution</code></a>
   <li class='link'><a class='doclink' href='../../../../overview-summary.html#juneau-marshall.MarshallingUris'>Overview &gt; juneau-marshall &gt; URIs</a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#uriResolution-org.apache.juneau.UriResolution-">uriResolution</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.
   <br>The default is <a href="../../../../org/apache/juneau/UriResolution.html#NONE"><code>UriResolution.NONE</code></a></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="fileCharset-java.nio.charset.Charset-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>fileCharset</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.658">fileCharset</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html?is-external=true" title="class or interface in java.nio.charset">Charset</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#fileCharset-java.nio.charset.Charset-">WriterSerializerBuilder</a></code></span></div>
<div class="block"><i><l>WriterSerializer</l> configuration property:&emsp;</i> File charset.

 <p>
 The character set to use for writing <c>Files</c> to the file system.

 <p>
 Used when passing in files to <a href="../../../../org/apache/juneau/serializer/Serializer.html#serialize-java.lang.Object-java.lang.Object-"><code>Serializer.serialize(Object, Object)</code></a>.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that writes UTF-8 files.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .fileCharset(Charset.<jsm>forName</jsm>(<js>"UTF-8"</js>))
      .build();

   <jc>// Use it to read a UTF-8 encoded file.</jc>
   s.serialize(<jk>new</jk> File(<js>"MyBean.txt"</js>), myBean);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/WriterSerializer.html#WSERIALIZER_fileCharset"><code>WriterSerializer.WSERIALIZER_fileCharset</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#fileCharset-java.nio.charset.Charset-">fileCharset</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.
   <br>The default is the system JVM setting.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="maxIndent-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>maxIndent</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.664">maxIndent</a>(int&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#maxIndent-int-">WriterSerializerBuilder</a></code></span></div>
<div class="block"><i><l>WriterSerializer</l> configuration property:&emsp;</i>  Maximum indentation.

 <p>
 Specifies the maximum indentation level in the serialized document.

 <ul class='notes'>
   <li>This setting does not apply to the RDF serializers.
 </ul>

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that indents a maximum of 20 tabs.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .ws()  <jc>// Enable whitespace</jc>
      .maxIndent(20)
      .build();
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/WriterSerializer.html#WSERIALIZER_maxIndent"><code>WriterSerializer.WSERIALIZER_maxIndent</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#maxIndent-int-">maxIndent</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.
   <br>The default is <c>100</c>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="quoteChar-char-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>quoteChar</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.670">quoteChar</a>(char&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#quoteChar-char-">WriterSerializerBuilder</a></code></span></div>
<div class="block"><i><l>WriterSerializer</l> configuration property:&emsp;</i>  Quote character.

 <p>
 Specifies the character to use for quoting attributes and values.

 <ul class='notes'>
   <li>This setting does not apply to the RDF serializers.
 </ul>

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that uses single quotes.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .quoteChar(<js>'\''</js>)
      .build();

   <jc>// A bean with a single property</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf> = <js>"bar"</js>;
   }

   <jc>// Produces {'foo':'bar'}</jc>
   String json = s.toString(<jk>new</jk> MyBean());
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/WriterSerializer.html#WSERIALIZER_quoteChar"><code>WriterSerializer.WSERIALIZER_quoteChar</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#quoteChar-char-">quoteChar</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.
   <br>The default is <js>'"'</js>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="sq--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sq</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.676">sq</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#sq--">WriterSerializerBuilder</a></code></span></div>
<div class="block"><i><l>WriterSerializer</l> configuration property:&emsp;</i>  Quote character.

 <p>
 Specifies to use single quotes for quoting attributes and values.

 <ul class='notes'>
   <li>This setting does not apply to the RDF serializers.
 </ul>

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that uses single quotes.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .sq()
      .build();

   <jc>// A bean with a single property</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf> = <js>"bar"</js>;
   }

   <jc>// Produces {'foo':'bar'}</jc>
   String json = s.toString(<jk>new</jk> MyBean());
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/WriterSerializer.html#WSERIALIZER_quoteChar"><code>WriterSerializer.WSERIALIZER_quoteChar</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#sq--">sq</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="streamCharset-java.nio.charset.Charset-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>streamCharset</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.682">streamCharset</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html?is-external=true" title="class or interface in java.nio.charset">Charset</a>&nbsp;value)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#streamCharset-java.nio.charset.Charset-">WriterSerializerBuilder</a></code></span></div>
<div class="block"><i><l>WriterSerializer</l> configuration property:&emsp;</i> Output stream charset.

 <p>
 The character set to use when writing to <c>OutputStreams</c>.

 <p>
 Used when passing in output streams and byte arrays to <a href="../../../../org/apache/juneau/serializer/Serializer.html#serialize-java.lang.Object-java.lang.Object-"><code>Serializer.serialize(Object, Object)</code></a>.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer that writes UTF-8 files.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .streamCharset(Charset.<jsm>forName</jsm>(<js>"UTF-8"</js>))
      .build();

   <jc>// Use it to write to a UTF-8 encoded output stream.</jc>
   s.serializer(<jk>new</jk> FileOutputStreamStream(<js>"MyBean.txt"</js>), myBean);
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/WriterSerializer.html#WSERIALIZER_streamCharset"><code>WriterSerializer.WSERIALIZER_streamCharset</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#streamCharset-java.nio.charset.Charset-">streamCharset</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - The new value for this property.
   <br>The default is the system JVM setting.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="useWhitespace--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>useWhitespace</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.688">useWhitespace</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#useWhitespace--">WriterSerializerBuilder</a></code></span></div>
<div class="block"><i><l>WriterSerializer</l> configuration property:&emsp;</i>  Use whitespace.

 <p>
 When enabled, whitespace is added to the output to improve readability.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer with whitespace enabled.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .useWhitespace()
      .build();

   <jc>// A bean with a single property</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf> = <js>"bar"</js>;
   }

   <jc>// Produces "\{\n\t"foo": "bar"\n\}\n"</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/WriterSerializer.html#WSERIALIZER_useWhitespace"><code>WriterSerializer.WSERIALIZER_useWhitespace</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#useWhitespace--">useWhitespace</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
<a name="ws--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ws</h4>
<pre>public&nbsp;<a href="../../../../org/apache/juneau/json/JsonSerializerBuilder.html" title="class in org.apache.juneau.json">JsonSerializerBuilder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/json/JsonSerializerBuilder.html#line.694">ws</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#ws--">WriterSerializerBuilder</a></code></span></div>
<div class="block"><i><l>WriterSerializer</l> configuration property:&emsp;</i>  Use whitespace.

 <p>
 When enabled, whitespace is added to the output to improve readability.

 <h5 class='section'>Example:</h5>
 <p class='bcode w800'>
   <jc>// Create a serializer with whitespace enabled.</jc>
   WriterSerializer s = JsonSerializer
      .<jsm>create</jsm>()
      .ws()
      .build();

   <jc>// A bean with a single property</jc>
   <jk>public class</jk> MyBean {
      <jk>public</jk> String <jf>foo</jf> = <js>"bar"</js>;
   }

   <jc>// Produces "\{\n\t"foo": "bar"\n\}\n"</jc>
   String json = s.serialize(<jk>new</jk> MyBean());
 </p>

 <ul class='seealso'>
   <li class='jf'><a href="../../../../org/apache/juneau/serializer/WriterSerializer.html#WSERIALIZER_useWhitespace"><code>WriterSerializer.WSERIALIZER_useWhitespace</code></a>
 </ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html#ws--">ws</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/juneau/serializer/WriterSerializerBuilder.html" title="class in org.apache.juneau.serializer">WriterSerializerBuilder</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>This object (for method chaining).</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/juneau/json/JsonSerializer.ReadableSafe.html" title="class in org.apache.juneau.json"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/juneau/json/JsonSerializerSession.html" title="class in org.apache.juneau.json"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/juneau/json/JsonSerializerBuilder.html" target="_top">Frames</a></li>
<li><a href="JsonSerializerBuilder.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2016&#x2013;2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>
