Ask Your Question
0

mysql json 값 가지고 오기 문의.

asked 2017-07-04 15:14:57 +0900

steve gravatar image

안녕하세요.

mysql 5.7.18 를 사용을 하고 있습니다.

JSON Data Type 을 사용을 해서 값을 가지고 오고 싶은데

const Ptr<resultsets> &result_sets 로

result_sets->GetString(1) 로 값을 가지고 와서

json 으로 변경을 해 주면 되나요?

혹시 이런 것은 없나요? Ptr<json> items = result_sets->GetJson(1)

edit retag flag offensive close merge delete

2 answers

Sort by » oldest newest most voted
0

answered 2017-07-04 18:12:35 +0900

steve gravatar image

BINARY and VARBINARY 타입도 같이 검토 부탁드립니다.

edit flag offensive delete link more

Comments

혹시 생각해 두신 MySQL Binary 타입에 대응되는 JSON 타입이 있으신지요?

Seunghyun gravatar imageSeunghyun ( 2017-07-04 18:15:39 +0900 )edit

아니요 생각해 두고 있는 것은 없습니다.

steve gravatar imagesteve ( 2017-07-05 14:15:58 +0900 )edit
0

answered 2017-07-04 15:40:20 +0900

Seunghyun gravatar image

안녕하세요. 아이펀팩토리입니다.

아이펀엔진의 MySQL Connector 는 아직 MySQL 5.7.8 의 JSON Data Type 을 지원하지 않습니다. 지원할 수 있는지 내부 검토를 해보도록 하겠습니다.

아래 코드는 ResultSets 에서 Row 를 JSON 으로 변경하는 예제입니다.

감사합니다.

Json ToJson(const Ptr<resultsets> &rs) {                                        
  Json json;                                                                    
  json.SetObject();                                                             

  size_t col_count = rs->GetColumnCount();                                      
  for (size_t i = 0; i < col_count; ++i) {                                      
    string col_name = rs->GetColumnName(i);                                     
    enum_field_types col_type = rs->GetColumnType(i);                           
    switch (type) {                                                             
      // null                                                                   
      case MYSQL_TYPE_NULL: {                                                   
        json[col_name].SetNull();                                               
        break;                                                                  
      }                                                                         
      // integer                                                                
      case MYSQL_TYPE_NEWDECIMAL:                                               
      case MYSQL_TYPE_DECIMAL:                                                  
      case MYSQL_TYPE_BIT:                                                      
      case MYSQL_TYPE_TINY:                                                     
      case MYSQL_TYPE_SHORT:                                                    
      case MYSQL_TYPE_LONG:                                                     
      case MYSQL_TYPE_NULL:                                                     
      case MYSQL_TYPE_LONGLONG:                                                 
      case MYSQL_TYPE_INT24: {                                                  
        json[col_name] = rs->GetInt(i);                                         
        break;                                                                  
      }                                                                         
      // double                                                                 
      case MYSQL_TYPE_FLOAT:                                                    
      case MYSQL_TYPE_DOUBLE: {                                                 
        json[col_name] = rs->GetDouble(i);                                      
        break;                                                                  
      }                                                                         
      // string                                                                 
      case MYSQL_TYPE_VARCHAR:                                                  
      case MYSQL_TYPE_TINY_BLOB:                                                
      case MYSQL_TYPE_MEDIUM_BLOB:                                              
      case MYSQL_TYPE_LONG_BLOB:                                                
      case MYSQL_TYPE_BLOB:                                                     
      case MYSQL_TYPE_VAR_STRING:                                               
      case MYSQL_TYPE_STRING: {                                                 
        json[col_name] = rs->GetString(i);                                      
        break;                                                                  
      }                                                                         
      // datetime                                                               
      case MYSQL_TYPE_DATE:                                                     
      case MYSQL_TYPE_DATETIME: {                                               
        json[col_name] = WallClock::GetTimestring(rs->GetDateTime(i));          
        break;                                                                  
      }                                                                         
      // time                                                                   
      case MYSQL_TYPE_TIME: {                                                   
        json[col_name] = boost::lexical_cast<string>(rs->GetDate(i));           
        break;                                                                  
      }                                                                         
      default: {                                                                
        LOG(FATAL) << "Unexpected type: " << col_type;                          
        break;                                                                  
      }                                                                         
    }                                                                           
  }                                                                             

  return json;                                                                  
}      
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2017-07-04 15:14:57 +0900

Seen: 144 times

Last updated: Jul 04 '17