不能隐式地将类型'newtonsoft.json.linq.jtoken'转换为newt'newtonsoft.json.linq.jvalue'

时间:2018-04-21 18:12:00

标签: c# visual-studio asp.net-web-api

我正在使用visual studio开发一个web api,我的post api应该读取body中的值并从数据库中返回一个数组,但是我得到了标题中列出的错误。

这是我的代码:

  [HttpPost]
    public IHttpActionResult getsub([FromBody] JObject data)
    {

        using (GaminBrainEntities entities = new GaminBrainEntities())
        {
            JValue id = data.SelectToken("pk");
            return Ok(entities.SP_Brands_Get_By_Category(id).ToArray);
        }
    }

如何更改代码以修复错误?

1 个答案:

答案 0 :(得分:0)

返回类型的SelectToken方法是JToken,并且它没有从JToken隐式转换为JValue,因此编译器会抛出此错误,因此将id的类型更改为JToken然后编译器会很高兴。

version: '2'
services:
  db:
    container_name: test
    restart: unless-stopped
    image: mysql:5.7
    command: --innodb_use_native_aio=0
    environment:
      MYSQL_ROOT_PASSWORD: 'password'
      MYSQL_DATABASE: 'mydb'
    ports: 
      - 6612:3306
    volumes:
      - ./db:/var/lib/mysql

并且你的return语句抛出错误因为ToArray是方法所以你必须用括号写ToArray()这将解决你的另一个错误。如果你的id是整数值,那么首先将它转换为整数然后传递给存储过程

JToken id = data.SelectToken("");