Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (C) 2006-2014 phloc systems http://www.phloc.com office[at]phloc[dot]com Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
 
 package com.phloc.json.impl;
 
 import java.io.Reader;
 import java.util.Map;
 
 
 
The JSONReader can be used to parse an existing JSON string into the corresponding JSON object structure.

Author(s):
Boris Gregorcic
 
 public final class JSONReader
 {
   private static final Logger LOG = LoggerFactory.getLogger (JSONReader.class);
 
   private JSONReader ()
   {
     // private
   }
 
   @Nullable
   public static IJSONPropertyValue <?> convert (@Nonnull final JsonNode aNode)
   {
     if (aNode.isObject ())
       return convertObject ((ObjectNodeaNode);
 
     if (aNode.isArray ())
       return convertArray ((ArrayNodeaNode);
 
     // boolean
     if (aNode.isBoolean ())
       return new JSONPropertyValueBoolean (aNode.booleanValue ());
 
     // integers
     if (aNode.isInt ())
       return new JSONPropertyValueInteger (aNode.intValue ());
 
     if (aNode.isLong ())
       return new JSONPropertyValueLong (aNode.longValue ());
 
     if (aNode.isBigInteger ())
       return new JSONPropertyValueBigInteger (aNode.bigIntegerValue ());
 
     // floating points
     if (aNode.isDouble ())
       return new JSONPropertyValueDouble (aNode.doubleValue ());
 
     if (aNode.isBigDecimal ())
       return new JSONPropertyValueBigDecimal (aNode.decimalValue ());
 
     // Text
     if (aNode.isTextual ())
      return new JSONPropertyValueString (aNode.textValue ());
    if (!aNode.isNull ())
    {
      .warn ("Having JSON Node with weird type: " + aNode); //$NON-NLS-1$
    }
    return null;
  }

  
Converts a passed com.fasterxml.jackson.databind.JsonNode into a JSONObject

Parameters:
aNode
Returns:
the resulting object
  public static JSONObject convertObject (@Nonnull final ObjectNode aNode)
  {
    if (aNode == null)
    {
      throw new NullPointerException ("aNode"); //$NON-NLS-1$
    }
    final JSONObject aObj = new JSONObject ();
    for (final Map.Entry <StringJsonNodeaEntry : IterableIterator.create (aNode.fields ()))
    {
      final IJSON aConvertedValue = convert (aEntry.getValue ());
      // Do not set null values
      if (aConvertedValue != null)
      {
        aObj.setProperty (aEntry.getKey (), aConvertedValue);
      }
    }
    return aObj;
  }

  
Converts the passed com.fasterxml.jackson.databind.node.ArrayNode to a corresponding com.phloc.json.impl.value.JSONPropertyValueList

Parameters:
aValues
Returns:
a property list representing the passed array
  public static JSONPropertyValueList <?> convertArray (final ArrayNode aValues)
  {
    for (final JsonNode aNode : aValues)
    {
      ret.addValue (convert (aNode));
    }
    return ret;
  }
  private static IJSON convertInternal (@Nonnull final JsonNode aNodethrows JSONParsingException
  {
    final IJSON aJSON = convert (aNode);
    if (aJSON == null)
    {
      throw new JSONParsingException ("Failed to convert JSON node to internal representation: " + aNode); //$NON-NLS-1$
    }
    return aJSON;
  }

  
Parse the passed JSON string into whatever resulting com.phloc.json.IJSON representation

Parameters:
sJSON the JSON string to convert, must be a valid JSON string!
Returns:
the resulting IJSON representation
Throws:
JSONParsingException
  public static IJSON parse (@Nonnull final String sJSONthrows JSONParsingException
  {
    return convertInternal (JacksonHelper.parseToNode (sJSON));
  }
  public static IJSON parse (@Nonnull final InputStream aISthrows JSONParsingException
  {
    return convertInternal (JacksonHelper.parseToNode (aIS));
  }
  public static IJSON parse (@Nonnull final IInputStreamProvider aIISthrows JSONParsingException
  {
    return convertInternal (JacksonHelper.parseToNode (aIIS.getInputStream ()));
  }
  public static IJSON parse (@Nonnull final Reader aReaderthrows JSONParsingException
  {
    return convertInternal (JacksonHelper.parseToNode (aReader));
  }
  public static IJSON parse (@Nonnull final IReaderProvider aReaderProviderthrows JSONParsingException
  {
    return convertInternal (JacksonHelper.parseToNode (aReaderProvider.getReader ()));
  }

  
Parse the passed JSON string into an com.phloc.json.IJSONObject

Parameters:
sJSON the JSON string to convert, must be a valid JSON object representation!
Returns:
the resulting object
Throws:
JSONParsingException in case parsing fails
  public static IJSONObject parseObject (@Nonnull final String sJSONthrows JSONParsingException
  {
    final JsonNode aParsedNode = JacksonHelper.parseToNode (sJSON);
    if (!aParsedNode.isObject ())
    {
      throw new JSONParsingException ("Passed JSON string is not an object: '" + sJSON + "'"); //$NON-NLS-1$ //$NON-NLS-2$
    }
    return convertObject ((ObjectNodeaParsedNode);
  }

  
Parse the passed JSON array into an com.phloc.json.IJSONPropertyValueList

Parameters:
sJSON the JSON string to convert, must be a valid JSON array representation!
Returns:
the resulting list. The inner list type will be decided depending on the type of the first item in the array
Throws:
JSONParsingException in case parsing fails
  public static IJSONPropertyValueList <?> parseArray (@Nonnull final String sJSONthrows JSONParsingException
  {
    final JsonNode aParsedNode = JacksonHelper.parseToNode (sJSON);
    if (!aParsedNode.isArray ())
    {
      throw new JSONParsingException ("Passed JSON string is not an array: '" + sJSON + "'"); //$NON-NLS-1$ //$NON-NLS-2$
    }
    return convertArray ((ArrayNodeaParsedNode);
  }

  
Parse the passed JSON array into an com.phloc.json.IJSONPropertyValueList if possible. This is a safe wrapper around parseArray(java.lang.String) that just returns null in case of an error and does not throw exceptions.

Parameters:
sJSON the JSON string to convert
Returns:
the resulting list. The inner list type will be decided depending on the type of the first item in the array
  public static IJSONPropertyValueList <?> parseArraySafe (final String sJSON)
  {
    if (StringHelper.hasNoText (sJSON))
    {
      return null;
    }
    try
    {
      return JSONReader.parseArray (sJSON);
    }
    catch (final JSONParsingException aEx)
    {
      return null;
    }
  }

  
Utility method handling arrays with inner array member type java.lang.Boolean .

  {
    for (final JsonNode aValue : aValues)
    {
      aList.addValue (new JSONPropertyValueBoolean (aValue.booleanValue ()));
    }
    return aList;
  }

  
Utility method handling arrays with inner array member type java.lang.Integer .

  {
    for (final JsonNode aValue : aValues)
    {
      aList.addValue (new JSONPropertyValueInteger (aValue.intValue ()));
    }
    return aList;
  }

  
Utility method handling arrays with inner array member type java.lang.String.

  {
    for (final JsonNode aValue : aValues)
    {
      aList.addValue (new JSONPropertyValueString (aValue.textValue ()));
    }
    return aList;
  }

  
Utility method handling arrays with inner array member type com.phloc.json.IJSONObject.

  public static JSONPropertyValueList <IJSONObjectconvertObjectList (final ArrayNode aValues)
  {
    final JSONPropertyValueList <IJSONObjectaList = new JSONPropertyValueList <IJSONObject> ();
    for (final JsonNode aValue : aValues)
    {
      aList.addValue (convertObject ((ObjectNodeaValue));
    }
    return aList;
  }
New to GrepCode? Check out our FAQ X