# SearchReplace - Error during search. com.inductiveautomation.ignition.common.gson.JsonSyntaxException

**URL:** <https://forum.inductiveautomation.com/t/searchreplace-error-during-search-com-inductiveautomation-ignition-common-gson-jsonsyntaxexception/70895>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [March 10, 2023, 9:59am UTC](https://forum.inductiveautomation.com/t/searchreplace-error-during-search-com-inductiveautomation-ignition-common-gson-jsonsyntaxexception/70895 "2023-03-10T09:59:08Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [March 10, 2023, 9:59am UTC](https://forum.inductiveautomation.com/t/searchreplace-error-during-search-com-inductiveautomation-ignition-common-gson-jsonsyntaxexception/70895/1 "2023-03-10T09:59:08Z")

</div>

How would I locate the dodgy View that's causing the find/replace tool to fail? I have 417 Views, so saving them 1-by-1 is a bit unrealistic

```python
20:26:40.619 [ForkJoinPool.commonPool-worker-5] WARN SearchReplace - Error during search.
com.inductiveautomation.ignition.common.gson.JsonSyntaxException: com.inductiveautomation.ignition.common.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 6149 path $
	at com.inductiveautomation.ignition.common.gson.Gson.assertFullConsumption(Gson.java:903)
	at com.inductiveautomation.ignition.common.gson.Gson.fromJson(Gson.java:866)
	at com.inductiveautomation.perspective.common.config.ViewConfig.fromProjectResource(ViewConfig.java:104)
	at com.inductiveautomation.perspective.designer.search.ViewSearchContext.getView(ViewSearchContext.java:66)
	at com.inductiveautomation.perspective.designer.search.ViewSearchCursor.initialize(ViewSearchCursor.java:29)
	at com.inductiveautomation.ignition.designer.findreplace.AbstractDeferredCursor.next(AbstractDeferredCursor.java:21)
	at com.inductiveautomation.ignition.designer.findreplace.SearchObjectAggregator.advance(SearchObjectAggregator.java:119)
	at com.inductiveautomation.ignition.designer.findreplace.SearchObjectAggregator.next(SearchObjectAggregator.java:107)
	at com.inductiveautomation.ignition.designer.findreplace.SearchObjectAggregator.next(SearchObjectAggregator.java:89)
	at com.inductiveautomation.ignition.designer.findreplace.SearchObjectAggregator.next(SearchObjectAggregator.java:31)
	at java.base/java.util.Iterator.forEachRemaining(Unknown Source)
	at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
	at java.base/java.util.stream.ReferencePipeline.collect(Unknown Source)
	at com.inductiveautomation.ignition.designer.findreplace.DefaultSearchExecutor.search(DefaultSearchExecutor.java:40)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)
Caused by: com.inductiveautomation.ignition.common.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 6149 path $
	at com.inductiveautomation.ignition.common.gson.stream.JsonReader.syntaxError(JsonReader.java:1568)
	at com.inductiveautomation.ignition.common.gson.stream.JsonReader.checkLenient(JsonReader.java:1409)
	at com.inductiveautomation.ignition.common.gson.stream.JsonReader.doPeek(JsonReader.java:542)
	at com.inductiveautomation.ignition.common.gson.stream.JsonReader.peek(JsonReader.java:425)
	at com.inductiveautomation.ignition.common.gson.Gson.assertFullConsumption(Gson.java:899)
	... 24 common frames omitted
20:26:42.590 [ForkJoinPool.commonPool-worker-5] WARN SearchReplace - Error during search.
com.inductiveautomation.ignition.common.gson.JsonSyntaxException: com.inductiveautomation.ignition.common.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 6149 path $
	at com.inductiveautomation.ignition.common.gson.Gson.assertFullConsumption(Gson.java:903)
	at com.inductiveautomation.ignition.common.gson.Gson.fromJson(Gson.java:866)
	at com.inductiveautomation.perspective.common.config.ViewConfig.fromProjectResource(ViewConfig.java:104)
	at com.inductiveautomation.perspective.designer.search.ViewSearchContext.getView(ViewSearchContext.java:66)
	at com.inductiveautomation.perspective.designer.search.ViewSearchCursor.initialize(ViewSearchCursor.java:29)
	at com.inductiveautomation.ignition.designer.findreplace.AbstractDeferredCursor.next(AbstractDeferredCursor.java:21)
	at com.inductiveautomation.ignition.designer.findreplace.SearchObjectAggregator.advance(SearchObjectAggregator.java:119)
	at com.inductiveautomation.ignition.designer.findreplace.SearchObjectAggregator.next(SearchObjectAggregator.java:107)
	at com.inductiveautomation.ignition.designer.findreplace.SearchObjectAggregator.next(SearchObjectAggregator.java:89)
	at com.inductiveautomation.ignition.designer.findreplace.SearchObjectAggregator.next(SearchObjectAggregator.java:31)
	at java.base/java.util.Iterator.forEachRemaining(Unknown Source)
	at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
	at java.base/java.util.stream.ReferencePipeline.collect(Unknown Source)
	at com.inductiveautomation.ignition.designer.findreplace.DefaultSearchExecutor.search(DefaultSearchExecutor.java:40)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)
Caused by: com.inductiveautomation.ignition.common.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 6149 path $
	at com.inductiveautomation.ignition.common.gson.stream.JsonReader.syntaxError(JsonReader.java:1568)
	at com.inductiveautomation.ignition.common.gson.stream.JsonReader.checkLenient(JsonReader.java:1409)
	at com.inductiveautomation.ignition.common.gson.stream.JsonReader.doPeek(JsonReader.java:542)
	at com.inductiveautomation.ignition.common.gson.stream.JsonReader.peek(JsonReader.java:425)
	at com.inductiveautomation.ignition.common.gson.Gson.assertFullConsumption(Gson.java:899)
	... 24 common frames omitted

```

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 10, 2023, 4:52pm UTC](https://forum.inductiveautomation.com/t/searchreplace-error-during-search-com-inductiveautomation-ignition-common-gson-jsonsyntaxexception/70895/2 "2023-03-10T16:52:16Z")

</div>

Unfortunately, there's no way I can see to get a better idea (from find & replace) which view it's bombing out on.

You could try a script that looks at each `view.json` on the filesystem; it looks like the one that's an issue has no line breaks and is totally invalid (a bad script to write an updated view json, maybe?)  
Based on: `Caused by: com.inductiveautomation.ignition.common.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 6149 path $`

---

<div class="post-metadata">

**Author:** ![EricProvBRP](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ericprovbrp/32/6352_2.png) [@EricProvBRP](https://forum.inductiveautomation.com/u/EricProvBRP)\
**Post date:** [March 25, 2025, 1:07pm UTC](https://forum.inductiveautomation.com/t/searchreplace-error-during-search-com-inductiveautomation-ignition-common-gson-jsonsyntaxexception/70895/3 "2025-03-25T13:07:08Z")

</div>

Is this problem still relevant 2 years later?

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 25, 2025, 3:26pm UTC](https://forum.inductiveautomation.com/t/searchreplace-error-during-search-com-inductiveautomation-ignition-common-gson-jsonsyntaxexception/70895/4 "2025-03-25T15:26:18Z")

</div>

I don't know, are you encountering it?

I don't know (and I suspect two years later neither does Nick) how one of Nick's views got into this state, but it's entirely possible that whatever underlying bug got him into that state is either still present or was fixed in some intermediate version without being explicitly linked to these symptoms.

---

<div class="post-metadata">

**Author:** ![EricProvBRP](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ericprovbrp/32/6352_2.png) [@EricProvBRP](https://forum.inductiveautomation.com/u/EricProvBRP)\
**Post date:** [March 25, 2025, 4:09pm UTC](https://forum.inductiveautomation.com/t/searchreplace-error-during-search-com-inductiveautomation-ignition-common-gson-jsonsyntaxexception/70895/5 "2025-03-25T16:09:42Z")

</div>

Yes, For exemple I made a search of a component by selecting only "Windows / Open Window", the Find/Replace will found the component, but if I search for "All Windows" no results was found and a error message appear on the console.  
12:01:44.882 [ForkJoinPool.commonPool-worker-15] WARN SearchReplace - Error during search.  
java.lang.StringIndexOutOfBoundsException: String index out of range: -1  
...

Ignition Version **8.1.32**

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 25, 2025, 4:20pm UTC](https://forum.inductiveautomation.com/t/searchreplace-error-during-search-com-inductiveautomation-ignition-common-gson-jsonsyntaxexception/70895/6 "2025-03-25T16:20:45Z")

</div>

That's a completely different issue than the one Nick encountered - for one, yours is Vision and Nick's was Perspective. You were both using find & replace, but that's not the relevant aspect here.

You should contact [our support department](https://support.inductiveautomation.com/hc/en-us) officially, though I'll tell you that one of the first things they'll likely recommend is that you upgrade. 8.1.32 is a year and a half old, and we've fixed a lot of bugs in the meantime.
