Dear Forum,

we need to work on some values provieded in JSON format. For this
reason we put together the following helping functions I include after
this lines.

What we first discoverd is, that itis impossible to paste this code as
an inline script under Global Scripts in a PRD. This allways lead to an
error at the time the PRD is instatuated in the UA.
When pasing the code in a Field event script it is working as designed.

Now I was taying to use the same code in a data item mapping of a
mapping activity. This again led to the fact that the workflow is
terminated at the time this mapping is done.

Can anybody tell me why the above code is working in one place, but not
the other? Is there any way to make work in Mapping Activity or Entity
activity as well?

Any help or suggestions are welcome !!

Thorsten

And now the code:

var JSON;
if (!JSON) {
JSON = {};
}

(function () {
"use strict";
function f(n) {
return n < 10 ? '0' + n : n;
}
if (typeof Date.prototype.toJSON !== 'function') {
Date.prototype.toJSON = function (key) {
return isFinite(this.valueOf()) ?
this.getUTCFullYear() + '-' +
f(this.getUTCMonth() + 1) + '-' +
f(this.getUTCDate()) + 'T' +
f(this.getUTCHours()) + ':' +
f(this.getUTCMinutes()) + ':' +
f(this.getUTCSeconds()) + 'Z' : null;
};
String.prototype.toJSON =
Number.prototype.toJSON =
Boolean.prototype.toJSON = function (key) {
return this.valueOf();
};
}

var cx =
/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
escapable =
/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
gap,
indent,
meta = { // table of character substitutions
'\b': '\\b',
'\t': '\\t',
'\n': '\\n',
'\f': '\\f',
'\r': '\\r',
'"' : '\\"',
'\\': '\\\\'
},
rep;

function quote(string) {
escapable.lastIndex = 0;
return escapable.test(string) ? '"' + string.replace(escapable,
function (a) {
var c = meta[a];
return typeof c === 'string' ? c :
'\\u' + ('0000' +
a.charCodeAt(0).toString(16)).slice(-4);
}) + '"' : '"' + string + '"';
}

function str(key, holder) {
var i,
k,
v,
length,
mind = gap,
partial,
value = holder[key];
if (value && typeof value === 'object' &&
typeof value.toJSON === 'function') {
value = value.toJSON(key);
}
if (typeof rep === 'function') {
value = rep.call(holder, key, value);
}
switch (typeof value) {
case 'string':
return quote(value);
case 'number':
return isFinite(value) ? String(value) : 'null';
case 'boolean':
case 'null':
return String(value);
case 'object':
if (!value) {
return 'null';
}
gap += indent;
partial = [];
if (Object.prototype.toString.apply(value) === '[object
Array]') {
length = value.length;
for (i = 0; i < length; i += 1) {
partial[i] = str(i, value) || 'null';
}
v = partial.length === 0 ? '[]' : gap ?
'[\n' + gap + partial.join(',\n' + gap) + '\n' +
mind + ']' :
'[' + partial.join(',') + ']';
gap = mind;
return v;
}
if (rep && typeof rep === 'object') {
length = rep.length;
for (i = 0; i < length; i += 1) {
if (typeof rep[i] === 'string') {
k = rep[i];
v = str(k, value);
if (v) {
partial.push(quote(k) + (gap ? ': ' : ':')
+ v);
}
}
}
} else {
for (k in value) {
if (Object.prototype.hasOwnProperty.call(value, k))
{
v = str(k, value);
if (v) {
partial.push(quote(k) + (gap ? ': ' : ':')
+ v);
}
}
}
}
v = partial.length === 0 ? '{}' : gap ?
'{\n' + gap + partial.join(',\n' + gap) + '\n' + mind +
'}' :
'{' + partial.join(',') + '}';
gap = mind;
return v;
}
}
if (typeof JSON.stringify !== 'function') {
JSON.stringify = function (value, replacer, space) {
var i;
gap = '';
indent = '';
if (typeof space === 'number') {
for (i = 0; i < space; i += 1) {
indent += ' ';
}
} else if (typeof space === 'string') {
indent = space;
}
rep = replacer;
if (replacer && typeof replacer !== 'function' &&
(typeof replacer !== 'object' ||
typeof replacer.length !== 'number')) {
throw new Error('JSON.stringify');
}
return str('', {'': value});
};
}
if (typeof JSON.parse !== 'function') {
JSON.parse = function (text, reviver) {
var j;
function walk(holder, key) {
var k, v, value = holder[key];
if (value && typeof value === 'object') {
for (k in value) {
if (Object.prototype.hasOwnProperty.call(value,
k)) {
v = walk(value, k);
if (v !== undefined) {
value[k] = v;
} else {
delete value[k];
}
}
}
}
return reviver.call(holder, key, value);
}
text = String(text);
cx.lastIndex = 0;
if (cx.test(text)) {
text = text.replace(cx, function (a) {
return '\\u' +
('0000' +
a.charCodeAt(0).toString(16)).slice(-4);
});
}
if (/^[\],:{}\s]*$/

.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')

.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
']')
.replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
j = eval('(' + text + ')');
return typeof reviver === 'function' ?
walk({'': j}, '') : j;
}
throw new SyntaxError('JSON.parse');
};
}
}());

// End of JSON Declarations -- do not modify until here!

/**
* Return a special value out of a JSON based String which corresponds
to a certain pair.
* Excample: "Studiengang":"781","Exmagrund":"1"
* "Studiengang":"691","Exmagrund":"2"
* returnMatchedJValue ($String1,"Exmagrund","Studiengang","781") should
return "1"
*
* @param (JString) JString JSON String in the format
"Name1":"Value1","Name2":"Value2"...
* @param (String) Name Name were the value should be returned
* @param (String) CompareName Name of a pair which is used to select on
string out of an multivalued array
* @param (String) CompareVal Value of the Name to select from
*
* @return Value of the specified Name part
*/
function returnMatchedJValue(JSString,Name,CompareName,Comp areVal){
JVAL=JSON.parse(JSString);
if (JVAL[CompareName] == CompareVal)
{
return JVAL[Name];
}
else
{
return "Error";
}
}

/**
* Return a value out of a JSON based String
*
* @param (JString) JString JSON String in the format
"Name1":"Value1","Name2":"Value2"...
* @param (String) Name Name were the value should be returned
*
* @return Value of the specified Name part
*/

function returnJValue(JSString,NAME){
JVAL=JSON.parse(JSString);
return JVAL[NAME];
}


/**
* Replace one named Element within a JSON String
*
* @param (JString) JString JSON String within the replace should
happen
* @param (Element) String named Element, where the value should be
replaced
* @param (value) String Value which should be inserted
*
* @ return Changed JSON String
*/


--
tschloesser
------------------------------------------------------------------------
tschloesser's Profile: http://forums.novell.com/member.php?userid=23213
View this thread: http://forums.novell.com/showthread.php?t=451414