winlin

refine json number, use int64 when number is int.

@@ -341,9 +341,17 @@ string SrsAmf0Any::to_json() @@ -341,9 +341,17 @@ string SrsAmf0Any::to_json()
341 return to_boolean()? "true":"false"; 341 return to_boolean()? "true":"false";
342 } 342 }
343 case RTMP_AMF0_Number: { 343 case RTMP_AMF0_Number: {
  344 + double v = to_number();
  345 + int64_t iv = (int64_t)v;
  346 +
344 // len(max int64_t) is 20, plus one "+-." 347 // len(max int64_t) is 20, plus one "+-."
345 char tmp[22]; 348 char tmp[22];
346 - snprintf(tmp, 22, "%f", to_number()); 349 + if (v == iv) {
  350 + snprintf(tmp, 22, "%"PRId64, iv);
  351 + } else {
  352 + snprintf(tmp, 22, "%.6f", to_number());
  353 + }
  354 +
347 return tmp; 355 return tmp;
348 } 356 }
349 case RTMP_AMF0_Null: { 357 case RTMP_AMF0_Null: {