Hi Adrian,
Would it be better if you make "mapper" property to be public? Now, I cannot not change date format in JSON string even though Jackson allow to do. http://wiki.fasterxml.com/JacksonFAQDateHandling For example, I want to change: createdTxStamp: 1386071477388 to: createdTxStamp: "2013-12-03" Best Regards, Chatree Srichart On Mon, Oct 27, 2014 at 4:06 PM, <[hidden email]> wrote: > Author: adrianc > Date: Mon Oct 27 09:06:59 2014 > New Revision: 1634481 > > URL: http://svn.apache.org/r1634481 > Log: > Integrate JSON.java with the Jackson library. > > Modified: > > ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java > > Modified: > ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java > URL: > http://svn.apache.org/viewvc/ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java?rev=1634481&r1=1634480&r2=1634481&view=diff > > ============================================================================== > --- > ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java > (original) > +++ > ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java > Mon Oct 27 09:06:59 2014 > @@ -23,23 +23,30 @@ import java.io.InputStream; > import java.io.Reader; > > import org.apache.commons.io.IOUtils; > -import org.ofbiz.base.lang.ThreadSafe; > import org.ofbiz.base.util.Assert; > > +import com.fasterxml.jackson.databind.ObjectMapper; > + > /** A JSON object. */ > @ThreadSafe > public final class JSON { > > + // TODO: Find a generic way to modify mapper options > + private static final ObjectMapper mapper = new ObjectMapper(); > + > public static JSON from(InputStream inStream) throws IOException { > Assert.notNull("inStream", inStream); > String jsonString = IOUtils.toString(inStream, "UTF-8"); > return from(jsonString); > } > > - public static JSON from(Object object) { > + public static JSON from(Object object) throws IOException { > Assert.notNull("object", object); > - // TODO: Finish implementation. > - return null; > + try { > + return from(mapper.writeValueAsString(object)); > + } catch (Exception e) { > + throw new IOException(e); > + } > } > > public static JSON from(Reader reader) throws IOException { > @@ -70,9 +77,14 @@ public final class JSON { > return jsonString.hashCode(); > } > > - public <T> T toObject() { > - // TODO: Finish implementation. > - return null; > + public <T> T toObject(Class<T> targetClass) throws IOException { > + try { > + return mapper.readValue(jsonString, targetClass); > + } catch (IOException e) { > + throw e; > + } catch (Exception e) { > + throw new IOException(e); > + } > } > > @Override > > > |
No, because that would expose Jackson to the rest of the framework.
There is a TODO in JSON.java to find a generic way to include those features. So, if you can think of a way to add a generic method to JSON.java that will configure Jackson, that would be great. Something like JSON.setDateFormat(String format)... Adrian Crum Sandglass Software www.sandglass-software.com On 11/6/2014 11:35 AM, Chatree Srichart wrote: > Hi Adrian, > > Would it be better if you make "mapper" property to be public? > > Now, I cannot not change date format in JSON string even though Jackson > allow to do. > > http://wiki.fasterxml.com/JacksonFAQDateHandling > > For example, I want to change: > > createdTxStamp: 1386071477388 > > to: > > createdTxStamp: "2013-12-03" > > Best Regards, > Chatree Srichart > > On Mon, Oct 27, 2014 at 4:06 PM, <[hidden email]> wrote: > >> Author: adrianc >> Date: Mon Oct 27 09:06:59 2014 >> New Revision: 1634481 >> >> URL: http://svn.apache.org/r1634481 >> Log: >> Integrate JSON.java with the Jackson library. >> >> Modified: >> >> ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java >> >> Modified: >> ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java?rev=1634481&r1=1634480&r2=1634481&view=diff >> >> ============================================================================== >> --- >> ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java >> (original) >> +++ >> ofbiz/branches/json-integration-refactoring/framework/base/src/org/ofbiz/base/lang/JSON.java >> Mon Oct 27 09:06:59 2014 >> @@ -23,23 +23,30 @@ import java.io.InputStream; >> import java.io.Reader; >> >> import org.apache.commons.io.IOUtils; >> -import org.ofbiz.base.lang.ThreadSafe; >> import org.ofbiz.base.util.Assert; >> >> +import com.fasterxml.jackson.databind.ObjectMapper; >> + >> /** A JSON object. */ >> @ThreadSafe >> public final class JSON { >> >> + // TODO: Find a generic way to modify mapper options >> + private static final ObjectMapper mapper = new ObjectMapper(); >> + >> public static JSON from(InputStream inStream) throws IOException { >> Assert.notNull("inStream", inStream); >> String jsonString = IOUtils.toString(inStream, "UTF-8"); >> return from(jsonString); >> } >> >> - public static JSON from(Object object) { >> + public static JSON from(Object object) throws IOException { >> Assert.notNull("object", object); >> - // TODO: Finish implementation. >> - return null; >> + try { >> + return from(mapper.writeValueAsString(object)); >> + } catch (Exception e) { >> + throw new IOException(e); >> + } >> } >> >> public static JSON from(Reader reader) throws IOException { >> @@ -70,9 +77,14 @@ public final class JSON { >> return jsonString.hashCode(); >> } >> >> - public <T> T toObject() { >> - // TODO: Finish implementation. >> - return null; >> + public <T> T toObject(Class<T> targetClass) throws IOException { >> + try { >> + return mapper.readValue(jsonString, targetClass); >> + } catch (IOException e) { >> + throw e; >> + } catch (Exception e) { >> + throw new IOException(e); >> + } >> } >> >> @Override >> >> >> > |
OK. I will think about that.
Thanks. Best Regards, Chatree Srichart On Thu, Nov 6, 2014 at 9:38 PM, Adrian Crum < [hidden email]> wrote: > No, because that would expose Jackson to the rest of the framework. There > is a TODO in JSON.java to find a generic way to include those features. > > So, if you can think of a way to add a generic method to JSON.java that > will configure Jackson, that would be great. > > Something like JSON.setDateFormat(String format)... > > Adrian Crum > Sandglass Software > www.sandglass-software.com > > > On 11/6/2014 11:35 AM, Chatree Srichart wrote: > >> Hi Adrian, >> >> Would it be better if you make "mapper" property to be public? >> >> Now, I cannot not change date format in JSON string even though Jackson >> allow to do. >> >> http://wiki.fasterxml.com/JacksonFAQDateHandling >> >> For example, I want to change: >> >> createdTxStamp: 1386071477388 >> >> to: >> >> createdTxStamp: "2013-12-03" >> >> Best Regards, >> Chatree Srichart >> >> On Mon, Oct 27, 2014 at 4:06 PM, <[hidden email]> wrote: >> >> Author: adrianc >>> Date: Mon Oct 27 09:06:59 2014 >>> New Revision: 1634481 >>> >>> URL: http://svn.apache.org/r1634481 >>> Log: >>> Integrate JSON.java with the Jackson library. >>> >>> Modified: >>> >>> ofbiz/branches/json-integration-refactoring/ >>> framework/base/src/org/ofbiz/base/lang/JSON.java >>> >>> Modified: >>> ofbiz/branches/json-integration-refactoring/ >>> framework/base/src/org/ofbiz/base/lang/JSON.java >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/branches/json- >>> integration-refactoring/framework/base/src/org/ofbiz/ >>> base/lang/JSON.java?rev=1634481&r1=1634480&r2=1634481&view=diff >>> >>> ============================================================ >>> ================== >>> --- >>> ofbiz/branches/json-integration-refactoring/ >>> framework/base/src/org/ofbiz/base/lang/JSON.java >>> (original) >>> +++ >>> ofbiz/branches/json-integration-refactoring/ >>> framework/base/src/org/ofbiz/base/lang/JSON.java >>> Mon Oct 27 09:06:59 2014 >>> @@ -23,23 +23,30 @@ import java.io.InputStream; >>> import java.io.Reader; >>> >>> import org.apache.commons.io.IOUtils; >>> -import org.ofbiz.base.lang.ThreadSafe; >>> import org.ofbiz.base.util.Assert; >>> >>> +import com.fasterxml.jackson.databind.ObjectMapper; >>> + >>> /** A JSON object. */ >>> @ThreadSafe >>> public final class JSON { >>> >>> + // TODO: Find a generic way to modify mapper options >>> + private static final ObjectMapper mapper = new ObjectMapper(); >>> + >>> public static JSON from(InputStream inStream) throws IOException { >>> Assert.notNull("inStream", inStream); >>> String jsonString = IOUtils.toString(inStream, "UTF-8"); >>> return from(jsonString); >>> } >>> >>> - public static JSON from(Object object) { >>> + public static JSON from(Object object) throws IOException { >>> Assert.notNull("object", object); >>> - // TODO: Finish implementation. >>> - return null; >>> + try { >>> + return from(mapper.writeValueAsString(object)); >>> + } catch (Exception e) { >>> + throw new IOException(e); >>> + } >>> } >>> >>> public static JSON from(Reader reader) throws IOException { >>> @@ -70,9 +77,14 @@ public final class JSON { >>> return jsonString.hashCode(); >>> } >>> >>> - public <T> T toObject() { >>> - // TODO: Finish implementation. >>> - return null; >>> + public <T> T toObject(Class<T> targetClass) throws IOException { >>> + try { >>> + return mapper.readValue(jsonString, targetClass); >>> + } catch (IOException e) { >>> + throw e; >>> + } catch (Exception e) { >>> + throw new IOException(e); >>> + } >>> } >>> >>> @Override >>> >>> >>> >>> >> |
Free forum by Nabble | Edit this page |