JMS Serializer配置

时间:2018-02-22 14:01:34

标签: symfony configuration yaml jmsserializerbundle jms-serializer

我在config.yml中使用它:

let jsonObj = some JSON 
let jobj = jsonObj.arrayValue
if !jobj.isEmpty {
   let j = jobj.filter({ (json) -> Bool in
       return json["country"].stringValue == "US"; })
   print ("filterdData: \(j)")
}

这在Entity.Category.yml:

# JMSSerializer Configuration
jms_serializer:
    #parameters:
        #jms_serializer.camel_case_naming_strategy.class: JMS\Serializer\Naming\IdenticalPropertyNamingStrategy
    metadata:
        cache: file
        debug: "%kernel.debug%"
        file_cache:
            dir: "%kernel.cache_dir%/serializer"
        auto_detection: true
        directories:
            AppBundle:
                namespace_prefix: "AppBundle"
                path: "%kernel.root_dir%/config/serializer/AppBundle"

但是当我尝试发送请求时,我收到此错误:

  

要定义的类AppBundle \ Entity \ Category的预期元数据   在/var/www/test/app/config/serializer/AppBundle/Entity.Category.yml。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

你在2行忘了TAB

答案 1 :(得分:0)

使用%kernel.root_dir%看起来您的项目文件路径不正确。确保/var/www/test/app是项目的正确路径。检查你的PHP __DIR__常量并尝试将`%kernel.root_dir%替换为所说的内容以及你认为路径应该是什么。

此外,您不应在配置文件中定义排除策略,而应该能够像这样注释您的实体并根据需要公开内容:

use JMS\Serializer\Annotation as JMS;

/**
 * Class ExampleEntity
 *
 * @JMS\ExclusionPolicy("all")
 * @ORM\Entity()
 */
class ExampleEntity
{
}

找到JMS注释here