JSON 입력을 처리하는 PHP 스크립트를 만듭니다 ($ _POST 변수를 통해). JSON에서 데이터를 추출하여 SQL 데이터베이스에 업로드합니다. 나는 특정 형식으로 JSON을 원하는 :json_encode가 하나의 값을 가진 배열을 객체로 변경합니다.
$object = json_decode('{
"key_a":[{"value_a":10,"value_b":7},{"value_a":10,"value_b":7},{"value_a":10,"value_b":7}],
"key_b":[{"value_a":10,"value_b":7}],
"key_c":[{"value_a":10,"value_b":7},{"value_a":10,"value_b":7}]
}',true);
기본적으로, 배열을 보유해야 각각의 키 객체가 (상관없이 크기가 없음). json_decode (json, true)를 사용하여 연관 배열 (객체와 반대)로 변환합니다. 각 키에 대해 많은 수표를 추가하여 개체 나 배열을 검사해야했습니다 (ASP.net 페이지에서 추출한 내용은 단일 개체가있는 개체를 배열로 변환 함). 그 (것)들을 붙 든다).
if(is_object($object["key_b"]))
{
$a = array();
$a[] = $object["key"];
$object["key"] = $a;
}
내가 그 배열을 반복 SQL 데이터베이스의 행에 값을 추가 :이 "객체이야 내가 여기서"경우 객체를 유지하는 배열을 싶습니다 점검은 다음 배열로 다시 변환 할 수 있습니다. 어떤
echo(json_encode($object));
// RETURNED JSON
'{
"key_a":[{"value_a":10,"value_b":7},{"value_a":10,"value_b":7},{"value_a":10,"value_b":7}],
"key_b":{"value_a":10,"value_b":7},
"key_c":[{"value_a":10,"value_b":7},{"value_a":10,"value_b":7}]
}'
당신은 참조 Key_B와이 모두 잘 작동하지만로 json_encode와 JSON로 다시 변환 할 때, 오직 하나의 객체와 배열을 잡고있는 키 배열을 제거하고 해당 키에서 바로 객체를 남겨 배열이 길어 지지만 객체는 더 길다! 배열을 반복하는 자바 스크립트 스크립트를 만들어 각 객체에 하나의 DOM 요소 (div)를 추가 할 계획이므로이 작업은 정말 짜증이납니다.
왜 이런 일이 발생합니까? "? 배열에 하나의 개체 만이야 내가
"이 경우에도, 배열로 유지하는 방법이 시도 적이 있습니까 :
if(is_object($object["key_b"]))
{
$a = array();
$a[] = array_values($object["key"]);
$object["key"] = $a;
}
및
if(is_object($object["key_b"]))
{
$a = array();
$a[0] = array_values($object["key"]);
$object["key"] = $a;
}
을하지만 것 같아 이런 식으로 json_encode가 JSON에 영향을주는 것을 막을 수있는 방법은 없습니다.
이 문제를 해결하는 것이 어렵지 않지만, 키 당 하나의 검사 (배열 또는 값인지 여부 확인)를 추가하는 것을 의미합니다. 이는 데이터 추출이 실제로 커질 때 특히 시간이 많이 걸립니다.
모든 조언을 주시면 감사하겠습니다.
편집 :. JSON에서 "에 '변경 -하지만,이 난 그냥 구조를 보여주기 위해 쓴 유일한 예이다
편집 :이 아무것도 변경하는 경우 나, 아래로 내 코딩 시간을 잘라 참조를 사용 해요 ? :.
$t =& $object["key_b"];
if(is_object($t))
{
$a = array();
$a[] = $t;
$t = $a;
}
Javascript/JSON이 "객체"라고 부르는 것과 PHP가 객체를 호출하는 것은 상당히 다릅니다. '$ object [ "key"]'는 정확히 무엇입니까? 당신의 코드가'if'에서 실행되고 있습니까? – deceze
방금 예제로 썼습니다. 실제로 사용한 JSON이 아닙니다. 죄송합니다. –
음, 좋은 질문, 사기 - 나는 확실하지 않다! 나는 이것을 자바 스크립트 처리 객체/배열처럼 취급했다. –