1. 개요

 

MFC 에서 Json 포맷의 스트링을 파싱할 경우 사용 할 수 있는 open source

 

2. 설치

 

공식 git 페이지(https://github.com/open-source-parsers/jsoncpp) 에서 소스 코드를 다운로드 받아, Visual Studio IDE에서 프로젝트를 Import 및 Compile 하여 사용

 

이때, lib 형식과 dll 형식의 2가지 방식으로 컴파일 가능

 

3. 오류 대처

 

jsoncpp를 컴파일 하여 나온 결과물(lib, dll)을 프로젝트에 import 하여 사용하는 경우 debug 모드에서는 별 문제가 없으나, release 모드로 컴파일 시 [json_value.cpp : fatal error C1083: 컴파일러 생성 파일 파일을 열 수 없습니다. '../../build/vs71/release/lib_json/json_value.asm': No such file or directory] 와 같은 에러가 생기는 경우 다음과 같이 설정 값을 수정 하는 것으로 해결 가능

 

 

붉은 박스로 표시한 영역의 값을 목록 없음(No listing)으로 변경

 

 

1. 개요

 

PHP 에서 Array 형 데이터를 JSON 포멧으로 출력하고자 하는 경우 json_encode 함수를 호출함으로써 간단하게 데이터 변환이 가능하다.

 

단, 해당 함수는 UTF-8 형태의 String 값만을 사용할 수 있기 때문에 iconv 를 사용하여 UTF-8 인코딩을 하여 사용해야만 한다.

 

그런데 여기서 문제가 발생하는데, 한글 데이터를 사용할 경우 json_encode 함수가 한글을 유니코드 형태로 자동으로 변환해서 출력하게끔 되어 있다.

 

 

2. 해결 방안

 

PHP 5.4 버전 이상을 사용할 경우, 다음과 같이 상수 변수 값을 옵션으로 줌으로써 간단하게 해결이 가능하다.

json_encode($arrJson, JSON_UNESCAPED_UNICODE);

그러나, 하위 버전 PHP를 사용하는 경우 json_encode 함수가 옵션 값을 받지 않기 때문에 해당 방법을 사용 할 수 없다.

 

따라서, 다음의 함수를 추가하여 해결하도록 한다.

function han ($s) { return reset(json_decode('{"s":"'.$s.'"}')); }
function to_han ($str) { return preg_replace('/(\\\u[a-f0-9]+)+/e','han("$0")',$str); }

to_han (json_encode($arrJson));

비트 연산자를 통한 각 비트의 설정 값(1, 0) 얻어오기

int getAbit(unsigned short x, int n) 
{
 return (x & (1 << n)) >> n;
}

 

각 비트 값 설정

unsigned short setAbit(unsigned short x, int n, int value) 
{
 if (value == 1)
  return (unsigned short) (x | (1 << n));
 else
  return (unsigned short) (x & (~(1 << n)));
}

 

+ Recent posts