### Question:
WXDomObject extends CSSNode implements Cloneable,ImmutableDomObject { public void parseFromJson(JSONObject map){ if (map == null || map.size() <= 0) { return; } String type = (String) map.get("type"); this.mType = type; this.mRef = (String) map.get("ref"); Object style = map.get("style"); if (style != null && style instanceof JSONObject) { WXStyle styles = new WXStyle((JSONObject) style,false); this.mStyles = styles; this.transition = WXTransition.fromMap(styles, this); } Object attr = map.get("attr"); if (attr != null && attr instanceof JSONObject) { WXAttr attrs = new WXAttr((JSONObject) attr); this.mAttributes = attrs; } Object event = map.get("event"); if (event != null && event instanceof JSONArray) { WXEvent events = new WXEvent(); JSONArray eventArray = (JSONArray) event; int count = eventArray.size(); for (int i = 0; i < count; i++) { Object value = eventArray.get(i); events.addEvent(value); } this.mEvents = events; } }  void traverseTree(Consumer...consumers); void traverseUpdateTree(Consumer...consumers); int getViewPortWidth(); void setViewPortWidth(int mViewPortWidth); String getRef(); String getType(); @NonNull WXStyle getStyles(); @NonNull WXAttr getAttrs(); @NonNull WXEvent getEvents(); WXTransition getTransition(); @NonNull DomContext getDomContext(); void clearEvents(); static void prepareRoot(WXDomObject domObj,float defaultHeight,float defaultWidth); void parseFromJson(JSONObject map); void layoutBefore(); void layoutAfter(); final boolean hasUpdate(); final void markUpdateSeen(); @Override void setStyleHeight(float height); @Override void setStyleWidth(float width); boolean isFixed(); boolean canRecycled(); Object getExtra(); void remove(WXDomObject child); void removeFromDom(WXDomObject child); int index(WXDomObject child); void add(WXDomObject child, int index); @Deprecated void add2Dom(WXDomObject child, int index); WXDomObject getChild(int index); void addEvent(String e); boolean containsEvent(String e); void removeEvent(String e); void updateAttr(Map<String, Object> updates); void updateStyle(Map<String, Object> styles); void updateStyle(Map<String, Object> updates, boolean byPesudo); void applyStyle(Map<String, Object> styles); int childCount(); void hide(); void show(); boolean isVisible(); @Override WXDomObject clone(); boolean isDestroy(); void destroy(); ArrayList<String> getFixedStyleRefs(); void add2FixedDomList(String ref); String dumpDomTree(); static @Nullable WXDomObject parse(JSONObject json, WXSDKInstance wxsdkInstance); static @Nullable WXDomObject parse(JSONObject json, WXSDKInstance wxsdkInstance, WXDomObject parentDomObject); boolean isCloneThis(); void setCloneThis(boolean cloneThis); static void addDirtyKey(String key); static final String CHILDREN; static final String TYPE; static final String TAG; static final String ROOT; @Deprecated
  static final String TRANSFORM; @Deprecated
  static final String TRANSFORM_ORIGIN; @Deprecated
  public WXDomObject parent; public long mDomThreadNanos; public long mDomThreadTimestamp; }### Answer:
@Test public void testParseFromJson() throws Exception { dom.parseFromJson(JSONObject.parseObject("{\"ref\":\"100\",\"type\":\"div\",\"attr\":{},\"style\":{\"backgroundColor\":\"rgb(40,96,144)\",\"fontSize\":40,\"color\":\"#ffffff\",\"paddingRight\":30,\"paddingLeft\":30,\"paddingBottom\":20,\"paddingTop\":20}}")); assertEquals(dom.getRef(),"100"); assertEquals(dom.getType(),"div"); dom.applyStyleToNode(); }