-1
我將如何轉換下面的C代碼到JNI C代碼:轉換C代碼進入JNI C代碼
UT_STATIC JsonResult PublishGps(GPS_VARS * vars)
{
JsonResult result;
JsonBuilderData jsonBuilderData;
#define METERS_SECOND_TO_MPH 2.236936
memset(m_GpsJsonBuffer, 0,GPS_JSON_BUFFER_SIZE);
InitJsonBuilder(&jsonBuilderData, m_GpsJsonCache, GPS_JSON_CACHE_SIZE, m_GpsJsonBuffer, GPS_JSON_BUFFER_SIZE);
uint32_t myTest = (uint32_t) vars->rawGps.time;
(void) PutJsonDateTime(myTest, FIELD(AMERIGO_TIMESTAMP_NAME));
(void) PutJsonLong((int32_t) myTest, FIELD(AMERIGO_EPOCH_NAME));
(void) PutJsonString(vars->dsn, FIELD(AMERIGO_DSN_NAME));
if (vars->rawGps.mode == 3)
{ (void) PutJsonString("good", FIELD(AMERIGO_QUALITY_NAME)); }
else
{
{ (void) PutJsonString("none", FIELD(AMERIGO_QUALITY_NAME)); }
}
(void) PutJsonDouble(AMERIGO_PREC,(float64_t) vars->rawGps.lat, FIELD(AMERIGO_LAT_NAME));
(void) PutJsonDouble(AMERIGO_PREC, (float64_t) vars->rawGps.lon, FIELD(AMERIGO_LON_NAME));
float64_t speedMph = (float64_t) vars->rawGps.speed * METERS_SECOND_TO_MPH;
(void) PutJsonDouble(AMERIGO_PREC_SPEED, (float64_t) speedMph,FIELD(AMERIGO_SPEED_NAME));
int32_t heading = (int32_t)vars->rawGps.track;
(void) PutJsonLong(heading, FIELD(AMERIGO_HEADING_NAME));
result = BuildJson(vars->gpsPayLoadBuffer, GPS_PAYLOAD_STRING_SIZE);
vars->payloadSize = strlen(vars->gpsPayLoadBuffer);
if (result != jsonSuccess) { ERROR("%s json error %s", __FUNCTION__, JsonStrerr(result)); }
//reschedule
vars->nextDrop = vars->dropPeriod + vars->currentTick;
return result;
}
我想知道什麼,我會在JsonResult
數據類型轉換成?它應該是jstring
,jint
等。JNI代碼用於JSON字符串或JSON對象的是什麼?任何幫助將不勝感激。
發佈舊代碼和新代碼。這表明努力。這將有助於解決您的問題,但不會爲您轉換。 – KevinDTimm
JSON是一種文本格式。構建一個JSON數據結構,將其序列化爲一個C/C++字符串,並將其轉換爲一個JNI jstring。更大的問題是你如何通過GPS_VARS參數。 –