Skip to content

Parsing Json error when creating 2 publications same time #35

@dguix

Description

@dguix

When creating two publications simultaneously in Kotlin, it sometimes happens that the parsing with the Gson class contains an error. Indeed the two JSONs of the publication are mixed and they are separated by a"]" instead of a comma. Should be a problem when writting the "kPublicationsFile.Alps" file. here is the code :

MainActivity.kt
matchmoreModel.createPublication("XX", 200.0, 60.0, "XParty")
matchmoreModel.createPublication("XX", 200.0, 60.0, "XRegister")

MatchMoreModel.kt

fun createMainDevice() {
Matchmore.instance.apply {
startUsingMainDevice(
{ device ->
deviceModel = device.id as String
Log.i(TAG, "start using device ${device.name}")
}, Throwable::printStackTrace)
}
}

fun createPublication(topic: String, range: Double, duration: Double, type: String) {
    Matchmore.instance.apply {
            val publication = Publication(topic, range, duration)
        publication.properties = hashMapOf("type" to type, "name" to "Party 1")
            Matchmore.instance.createPublicationForMainDevice(publication, { result ->
                Log.i(TAG, "Publication created ${result.topic}")
            }, Throwable::printStackTrace)
    }
}

Errors :

AndroidRuntime: FATAL EXCEPTION: main
Process: com.zombieapp.maxime.zombieapp, PID: 5125
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.zombieapp.maxime.zombieapp/com.zombieapp.maxime.zombieapp.MainActivity}: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 225 path $
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 225 path $
at com.google.gson.Gson.assertFullConsumption(Gson.java:903)
at com.google.gson.Gson.fromJson(Gson.java:893)
at com.google.gson.Gson.fromJson(Gson.java:841)
at io.matchmore.sdk.store.PublicationStore.(PublicationStore.kt:67)
at io.matchmore.sdk.AlpsManager$publicationStore$2.invoke(AlpsManager.kt:30)
at io.matchmore.sdk.AlpsManager$publicationStore$2.invoke(AlpsManager.kt:21)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at io.matchmore.sdk.AlpsManager.getPublicationStore(Unknown Source:7)
at io.matchmore.sdk.AlpsManager.(AlpsManager.kt:57)
at io.matchmore.sdk.Matchmore$instance$2.invoke(Matchmore.kt:23)
at io.matchmore.sdk.Matchmore$instance$2.invoke(Matchmore.kt:17)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at io.matchmore.sdk.Matchmore.getInstance(Unknown Source:9)
at com.zombieapp.maxime.zombieapp.MatchmoreModel.createMainDevice(MatchmoreModel.kt:21)
at com.zombieapp.maxime.zombieapp.MainActivity.onCreate(MainActivity.kt:17)
at android.app.Activity.performCreate(Activity.java:6975)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 225 path $
at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1568)
at com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1409)
at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:542)
at com.google.gson.stream.JsonReader.peek(JsonReader.java:425)
at com.google.gson.Gson.assertFullConsumption(Gson.java:899)
at com.google.gson.Gson.fromJson(Gson.java:893)
at com.google.gson.Gson.fromJson(Gson.java:841)
at io.matchmore.sdk.store.PublicationStore.(PublicationStore.kt:67)
at io.matchmore.sdk.AlpsManager$publicationStore$2.invoke(AlpsManager.kt:30)
at io.matchmore.sdk.AlpsManager$publicationStore$2.invoke(AlpsManager.kt:21)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at io.matchmore.sdk.AlpsManager.getPublicationStore(Unknown Source:7)
at io.matchmore.sdk.AlpsManager.(AlpsManager.kt:57)
at io.matchmore.sdk.Matchmore$instance$2.invoke(Matchmore.kt:23)
at io.matchmore.sdk.Matchmore$instance$2.invoke(Matchmore.kt:17)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at io.matchmore.sdk.Matchmore.getInstance(Unknown Source:9)
at com.zombieapp.maxime.zombieapp.MatchmoreModel.createMainDevice(MatchmoreModel.kt:21)
at com.zombieapp.maxime.zombieapp.MainActivity.onCreate(MainActivity.kt:17)
at android.app.Activity.performCreate(Activity.java:6975)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

MalformedJSON :
https://ibb.co/CtnQwQD

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions