회원 로그인
정보기억 정보기억에 체크할 경우 다음접속시 아이디와 패스워드를 입력하지 않으셔도 됩니다.
그러나, 개인PC가 아닐 경우 타인이 로그인할 수 있습니다.
PC를 여러사람이 사용하는 공공장소에서는 체크하지 마세요.
소셜네트워크 서비스를 통해서 로그인하시면 별도의 로그인 절차없이 회원서비스를 이용하실 수 있습니다.


최근 게시물

1.노션에서 작성 중

1.노션에서 작성 중

개편하기 전까지 노션에서 작성 중

2024.04.04//read more

2.ChatGPT

2.ChatGPT

OpenAI로 대규모 언어 모델대화형...

2023.03.16//read more

3.노코딩 게임 엔진 - 빌..

3.노코딩 게임 엔진 - 빌..

빌드 지원안드로이드iOS윈도우즈특이사...

2023.03.14//read more

4.(완료) 미접속 회원 정..

4.(완료) 미접속 회원 정..

[완료] 36명의 회원을 정리하였습니...

2023.02.16//read more

5.매뉴얼 플러스 - 전자제..



안정적인 DNS 서비스 DNSEver
DNS Powered by DNSEver.com


object 형 변환 (with Unity)

푸딩뱃살 | 2016.05.04 02:20 | 조회 10519
object 형 변환

json 파일을 파싱하려는 중 Dictionary<string, object> 형으로 받아 왔다.
// json 형태
{
  "1": {
    "type": "Easy",
    "id": "",
    "name": "",
    "document": "",
    "level": 1,
    "maxLevel": 3,
    "experience": 1,
    "moveSpeed": 1.0,
    "strength": 1.0,
    "attackSpeed": 1.0,
    "hp": 10,
    "maxAp": 10,
    "maxSp": 10,
    "skills": [ "AS0", "PS0" ],
    "dropItems": [ "" ],
    "dropGold": 10,
    "dropGem": 0,
    "spriteRenderer": [ "" ],
    "textures": [ "" ]
  }
}
object형인 value값이 int, float, string, array 등의 형태를 가지고 있기 때문에 object 타입을 형 변환하여 사용해야 하는데 문제가 발생, C#을 깊게 공부하지 않아 할 줄 모른다는 거다!!
// 단순 형 변환
Dictionary<string, object> objDic;
int value = (int)objDic["key"];
단순한 형 변환을 하였는데... 유니티에서 InvalidCastException 에러



object를 int, float 형 변환

구글링하여 찾아보았다.
obejct를 Hashtable(해시테이블)로 바꿔서 형 변환을 하라, Convert.ChangeType() 함수로 형 변환을 하라는 등... 점점 어려운 말만 되어 있다.
// Convert.ChangeType() 사용한 예
int value = (int)Convert.ChangeType(objDic["key"], typeof(int));
형 변환이 잘 된다.

object를 enum 형 변환

이 기세로 value 값을 enum으로 변환할 차례이다.
다시 구글링..
public EnumType enumType = new EnumType();

void main()
{
   // 
   enumType = enumParse<EnumType>(objDic["key"]);
}

// enum 파싱
public T enumParse<T>(object obj)
{
    T enumVal = (T)Enum.Parse(typeof(T), obj.ToString());
    return enumVal;
}

public enum EnumType
{
    Easy,
    Normal,
    Hard
}
Generic을 사용하여 EnumType의 value의 string 값으로 파싱하게 되어 있다.
쉽게 변환을 할 수 있었다.

더 찾아보니 int나 float형 변환은...
int value = int.Parse(objDic["key"].ToString());
이렇게 쉽게도 캐스팅이 가능했다.;;;

object를 array 형 변환

이번에는 배열형으로 형변환 해봐야 한다.
의외로 싶게 찾았고 적용해 보았다.
using System.Linq;

ToStringArray(objDic["key"]);

static string[] ToStringArray(object obj)
{
    var collection = obj as IEnumerable;
    if (collection != null)
    {
        return collection.Cast<object>().Select(x => x.ToString()).ToArray();
    }
    if (obj == null)
    {
        return new string[] { };
    }
    return new string[] { obj.ToString() };
}

두꺼운 책을 사서 정독해야 한다지만 현재로는 시간이 없어 무작정 배껴 수정하며 사용해야 한다;;;

285개(1/15페이지)
프로그래밍
번호 제목 글쓴이 조회 날짜
285 [Python] 동적 import - 모듈을 변수로 받아오기 푸딩뱃살 407 2022.10.27 10:45
284 [Python] 파이썬 3.7.7과 3.9.7의 os.path.expanduser() 차이 푸딩뱃살 440 2022.08.18 12:22
283 [Python] error: Microsoft Visual C++ 9.0 is required. 첨부파일 푸딩뱃살 662 2022.08.03 13:35
282 [Python] pyscript 첨부파일 푸딩뱃살 436 2022.06.09 11:21
281 [Python] float is / float not is 푸딩뱃살 584 2022.03.02 15:03
280 [Python] 이터널 문자열 f 푸딩뱃살 811 2022.01.27 16:35
279 [Python] is와 ==의 차이 푸딩뱃살 477 2021.11.25 15:54
278 [Python] Error: ImportError: file line 1: Ba 푸딩뱃살 894 2021.11.16 11:24
277 [Python] 파이썬 디컴파일 - uncompyle6 첨부파일 푸딩뱃살 755 2021.11.10 14:46
276 [Python] 파이썬 확장자 설명 푸딩뱃살 540 2021.11.03 14:38
275 [참고] 웹 fbx 뷰어 푸딩뱃살 459 2021.10.19 15:46
274 [Python] enumerate() 푸딩뱃살 489 2021.10.13 14:44
273 [Python] 아나콘다에서 가상 환경 첨부파일 푸딩뱃살 697 2020.11.21 00:26
272 [Python] pip로 설치 때 퍼미션 에러 사진 첨부파일 푸딩뱃살 1250 2020.06.06 17:13
271 [Python] OpenCV 10-3. 이미지 Thresholding - Otsu's Binarizatio 사진 푸딩뱃살 661 2020.06.05 14:01
270 [Python] OpenCV 10-2. 이미지 Thresholding - Adaptive Threshold 사진 푸딩뱃살 680 2020.06.05 13:58
269 [Python] OpenCV 10-1. 이미지 Thresholding 사진 푸딩뱃살 570 2020.06.05 13:56
268 [Python] OpenCV 9-2. 색 추적 푸딩뱃살 746 2020.06.02 23:29
267 [Python] OpenCV 9-1. 색공간 바꾸기 푸딩뱃살 631 2020.06.02 23:27
266 [Python] OpenCV 8-3. 이미지 비트 연산 사진 푸딩뱃살 515 2020.06.02 23:21