def fromJsonFragment(json, nameFromParent):
if isinstance(json, dict) and hasKeys(json.keys(), ["entries", "bins:type", "bins"], ["name", "bins:name"]):
if json["entries"] in ("nan", "inf", "-inf") or isinstance(json["entries"], numbers.Real):
entries = float(json["entries"])
else:
raise JsonFormatException(json, "Categorize.entries")
if isinstance(json.get("name", None), basestring):
name = json["name"]
elif json.get("name", None) is None:
name = None
else:
raise JsonFormatException(json["name"], "Categorize.name")
if isinstance(json["bins:type"], basestring):
contentType = json["bins:type"]
factory = Factory.registered[contentType]
else:
raise JsonFormatException(json, "Categorize.bins:type")
if isinstance(json.get("bins:name", None), basestring):
dataName = json["bins:name"]
elif json.get("bins:name", None) is None:
dataName = None
else:
raise JsonFormatException(json["bins:name"], "Categorize.bins:name")
if isinstance(json["bins"], dict):
bins = dict((k, factory.fromJsonFragment(v, dataName)) for k, v in json["bins"].items())
else:
raise JsonFormatException(json, "Categorize.bins")
out = Categorize.ed(entries, contentType, **bins)
out.quantity.name = nameFromParent if name is None else name
return out.specialize()
else:
raise JsonFormatException(json, "Categorize")
评论列表
文章目录