나는 하나의 PHP json_encode 문제가 있다. 이 숫자로 인코딩합니다 문장열 (예:
array('id' => 3)
됩니다
"{ ["id": "3", ...)
Js 만나면 해석할 때 이 값을 솔리드로 문장열 및 숫자 운영체 fail on 저들이요 다른 방법으로 json_encode 번호 등을 막기 위해 '아는 사람' 의 인코딩입니다 문장열? 감사합니다!
단, PHP, 이후 5.3.3 [there& # 39 의 깃발을] (http://php.net/json_encode) 를 자동 변환 번호 (매개변수입니다 5.3.0 옵션은 php 에 추가되었다):
$arr = array( 'row_id' => '1', 'name' => 'George' );
echo json_encode( $arr, JSON_NUMERIC_CHECK ); // {"row_id":1,"name":"George"}
I, 거짓하였으니 DB (PostgreSQL) 에서, 그 당시 판독값 모함이야 구체화하십시오. 우리는 우리의 최종 결과 및 각 행에 걸쳐 루프 do things with it 보다 어레이로써, 그래서 사용되는
$result_arr[] = array($db_row['name'], (int)$db_row['count']);
정수 값을 루프 내에 강제할 수 있습니다. ($ result_arr) '지금' json_encode 나는한다 때 이를 제대로 형식 번호. 이 데이터베이스에 오는 것이 아니라 여러 지정하십시오. 제어할 수 있습니다.
편집:
이 < code> < json_encode (), /code>;; 이 기능을 사용 할 수 있는 기능도 있습니다 즉석에서 < code> JSON_NUMERIC_CHECK< /code>;;; 두 번째 argument 로 플래깅 예정이다. 이 예에서는 표시되어도 조심해야 할 때 사용하는 it 와 같이 사용자 문서 (복사됨 아래). [http://uk3.php.net/manual/en/function.json-encode.php # 106641] [1]
<?php
// International phone number
json_encode(array('phone_number' => '+33123456789'), JSON_NUMERIC_CHECK);
?>
그리고 당신이 afaq afnor JSON:
{"phone_number":33123456789}
[1]: http://uk3.php.net/manual/en/function.json-encode.php # 106641
$a = array(
'id' => 152,
'another' => 'test',
'ananother' => 456,
);
$json = json_encode($a);
echo $json;
이 같은 경우, 잘못된 I& # 39 m not 너희는너희가 설명할 것으로 보인다.
{"id":152,"another":"test","ananother":456}
따라서 이 경우 정수) 로 않은 구체화하십시오.
< br>; 그러나 이 싸움은 따라 PHP 버전 사용하고 있습니다. 지금까지 몇 json_encode 버전에 따라 관련 버그 교정됨, PHP.
이 테스트 및 PHP 5.2.6 내린 바 있다. # 39 m, PHP 와 같은 일이 점점 i& 5.2.9 및 5.3.0. # 39, 내가 없는 don& 5.2.x 테스트할 수 있는 다른 버전 표시되어도 :- (
어떤 버전의 PHP 사용하고 있습니까? 테스트 케이스 보다 더 복잡한 들어 게시하기를 또는 됩니까?
아마 한 버그 보고할 수 http://bugs.php.net/ 관련? 예를 들어, [버그 # 40503: 정수 변환은 json_encode 어울리지 않는 PHP] (http://bugs.php.net/bug.php? id = 40503)?
< br>; 어쩌면 당신도 할 수 있다 [버그 # 38680] [1], 브트와?
[1]: 38680? id = http://bugs.php.net/bug.php
$json = preg_replace( "/\"(\d+)\"/", '$1', $json );
(, 음이 아닌 정수) 숫자임 따옴표로 대체할 수 있는 모든 번호로 자체 (& # 39, & # 39 42" ";; # 39, & # 39 42& 됩니다.).
참조 [이 주석문입니다 미리 수작업식] [1].
[1]: http://www.php.net/manual/en/function.json-encode.php # 86513
시도하시겠습니까 (# 39, & # 39, var1& '$ = 어레이입니다 도착 = >. # 39, & # 39 100mb/s var2&. = >. 200). json json_encode = $ ($ 도착, JSON_NUMERIC_CHECK), '
하지만 그건 그냥 PHP 에서 작동합니까 5.3.3. Php json_encode 로깅할 변경하십시오 이걸봐 http://php.net/manual/en/function.json-encode.php # refsect1-function.json-encode-changelog
다음 시험 유형을 변경하지 확인할 수 있다 () 가 json_encode 문자열이어야 반환되기를 JSON 문자열이어야 숫자 (예, 둘러싸인 큰따옴표). 스티페 사용하여 ([" var";], " integer" 도착;;) 또는 스티페 ($ 도착 [" var";], float" ";) 해결하십시오 거잖나.
<?php
class testclass {
public $foo = 1;
public $bar = 2;
public $baz = "Hello, world";
}
$testarr = array( 'foo' => 1, 'bar' => 2, 'baz' => 'Hello, world');
$json_obj_txt = json_encode(new testclass());
$json_arr_txt = json_encode($testarr);
echo "<p>Object encoding:</p><pre>" . $json_obj_txt . "</pre>";
echo "<p>Array encoding:</p><pre>" . $json_arr_txt . "</pre>";
// Both above return ints as ints. Type the int to a string, though, and...
settype($testarr["foo"], "string");
$json_arr_cast_txt = json_encode($testarr);
echo "<p>Array encoding w/ cast:</p><pre>" . $json_arr_cast_txt . "</pre>";
?>
조사하기 위해 완성도 (as I can& # 39, t 설명 추가 못함), 절 이 상세함을 다른 답을 추가할 수도 있다.
(편집: 읽을 수 있도록 후 실현하는 소스 데이터 (예를 들어 있는 OP& # 39 의 경우 데이터베이스 결과 집합을) 될 수도 있다는 문제 (장씩 숫자 열이 문자열로) 및 json_encode () 사실 문제의 원인을 않았다)
Mysql_fetch_array 의 매뉴얼 페이지를 모두 " ";:
>. , 어레이입니다 해당하는 반입됨 행일 을 반환하는지 문자열
. 및 " mysql fetch 행일 ":
>. 을 반환하는지 숫자 배열을 문장열 해당하는 반입됨 >. 행
확실히요 라고 하자. 이 항목은 반환되었습니다 어레이입니다 적립율은 써줬지
(I was 사용하여 데이터베이스 (db) 클래스에 phpBB2 (yes I know, it& # 39 의 비활용!) 및 " " sql_fetchrow ();; 해당 클래스의 메서드를 사용하여 " " mysql_fetch_array ();;)
또한, 내가 찾는 것은 문제가 있다는 점을 이 질문에 대한 이해를 바탕으로 됐지! )
앞서 설명한 것처럼 자신의 의견을 파스칼 마틴, 내가 잘못된 type" 의 후속 ᄀ군의 솔루션이므로 처리하는 "; 소스에서 문제 (즉, [mysql_field_type ()], 3 " " 사용하여 함수 또한 캐스팅 직후 페치할 (또는 다른 페치할 메서드을 " object" 같은;;?) 보다 일반적으로 될 것 "이라고 말했다.
json 데이터를 전송할 수 있는 네트워크를 통해 일부 json_encode 직렬화할 구조 형식. 그러므로 모든 콘텐츠는 유형이어야 구체화하십시오. 일부 매개변수입니다 받을 때와 마찬가지로 _POST 또는 $ $ 에서 _GET.
작업을 해야 할 경우, 그냥 숫자 값을 1 로 변환하십시오 전송됩니까 int 을 (를 린트발 () 함수를 에서 페르세인트 () 의 PHP, 자바스크립트) 그리곤요 실행하십시오 운영체.
Oli_arborum 생각한다 '는' 할 것 같은 preg_replace 죠브 사용할 수 있습니다 그냥 변경하십시오 다음과 같은 명령을
$json = preg_replace('#:"(\d+)"#', ':$1', $json);