3

特定の形式で JSON オブジェクトを作成しようとしています

{ "id": 12234 , "name": "Alex" , "gender": "Male"}

 // My code starts here

var number = userid;         // alert(userid) is 12345
var name=  nameuser;         // alert(nameuser)  is  Alex
var g= gender;                 // alert(gender) is male

var userObj = { "id": number , "name": name , "gender":g}

`JSON.stringify(userObj); を試しました。、オブジェクト タイプを次のように返します。

{"id":"12345" , "name":"Alex" , "gender":"Male"}

しかし、これは私が望むものではありません。数字を「12345」ではなく12345にしたいからです。

また、オブジェクト内のフィールドを文字列化しようとしました

{ "id": number , "name":JSON.stringify(name) ,gender: JSON.stringify(g)} 

しかし、私がalert(userObj)オブジェクトタイプを実行Object objectすると、これはサーバーが認識する形式ではありません。これには回避策があると確信していますが、解決策を見つけることができません

4

4 に答える 4

2

JSON は文字列のみを処理します。JSON に文字列、配列、またはその他の JSON オブジェクト以外を含めることは無効です。つまり、「数字」は許可されていません。文字列である必要があります。後で JSON を操作する場合は、必要に応じて文字列を数値に戻すことができる必要があります。JavaScript は通常、これらをうまく強制します。

サーバー側では、次のようなことができます

obj = json_decode(source)
obj.id = (int)obj.id
于 2012-08-02T18:22:45.697 に答える
0

あなたの質問からの以下のコードは有効なJSONです。

{ "id": 12234 , "name": "Alex" , "gender": "Male"}

あなたが抱えている問題は、userid変数が数値ではなく文字列であるということだと思います。もしそうなら、試してみてください

var number = parseInt(userid, 10);

(10パラメーターは、2進数や16進数などではなく、基数10の数値を使用していることを示します)。

于 2012-08-02T19:02:06.857 に答える
0

あなたの解決策は、JSONをどのようにフォーマットするかではなく、JSONで何をしたいかにかかっていると思います。

他のJavaScriptコードで使用している場合は、JSON.parseメソッドが反対側の問題の大部分を処理します(残りは自動型キャストで処理されます)。

サーバー側で使用している場合も、PHPなどがオブジェクトを適切にデコードします。

また、サーバー上でより厳密な言語である場合は、booleanまたはint/floatにキャストする必要のあるパラメーターを覚えておくだけです。

于 2012-08-02T18:54:37.503 に答える
0

オブジェクト タイプをプロパティの 1 つとして保存し、それを使用して必要な方法で変換します。

于 2012-08-02T19:10:20.217 に答える