    # File lib/chef/cookbook_version.rb, line 798
        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