# File lib/chef/cookbook_version.rb, line 770
    def self.json_create(o)
      cookbook_version = new(o["cookbook_name"])
      if o.has_key?('_rev')
        cookbook_version.couchdb_rev = o["_rev"] if o.has_key?("_rev")
        o.delete("_rev")
      end
      if o.has_key?("_id")
        cookbook_version.couchdb_id = o["_id"] if o.has_key?("_id")
        cookbook_version.index_id = cookbook_version.couchdb_id
        o.delete("_id")
      end
      # We want the Chef::Cookbook::Metadata object to always be inflated
      cookbook_version.metadata = Chef::Cookbook::Metadata.from_hash(o["metadata"])
      cookbook_version.manifest = o

      # We don't need the following step when we decide to stop supporting deprecated operators in the metadata (e.g. <<, >>)
      cookbook_version.manifest["metadata"] = JSON.parse(cookbook_version.metadata.to_json)

      cookbook_version.freeze_version if o["frozen?"]
      cookbook_version
    end